滴滴解题报告

//本渣渣第一次AK,特分享一波(PS:大神跳过就行了)

第一题注意输入可能是负数

第二题用long long就OK了

第一题
#include<cstdio>
#include<algorithm>
using namespace std;
const char buf[30]="0123456789ABCDEF";
int n,m;
char ans[40];
void solve(){
    if(!n){
        printf("0\n");
        return;
    }
    int id=0;
    while(n){
        ans[id++]=buf[n%m];
        n/=m;
    }
    for(int i=id-1;i>=0;i--){
        putchar(ans[i]);
    }
    printf("\n");
}
int main(){
    while(scanf("%d%d",&n,&m)==2){
        if(n<0){
            printf("-");
            n=-n;
        }
        solve();
    }
    return 0;
}

第二题:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1005;
int n,m;
long long dp[maxn][maxn];
int a[maxn];
void init(){
    for(int i=0;i<n;i++){
        fill(dp[i],dp[i]+m,0);
    }
    dp[0][0]=1;
}
void print(){
    for(int i=0;i<=n;i++){
        for(int j=0;j<=m;j++){
            printf("%d ",dp[i][j]);
        }
        printf("\n");
    }
}
void solve(){
    for(int i=0;i<n;i++){
        for(int j=0;j<=m;j++){
            if(j>=a[i]){
                dp[i+1][j]=dp[i][j]+dp[i][j-a[i]];
            }
            else{
                dp[i+1][j]=dp[i][j];
            }
        }
    }
    //print();
    printf("%lld\n",dp[n][m]);
}
int main(){
    //freopen("in.txt","r",stdin);
    while(scanf("%d%d",&n,&m)==2){
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        sort(a,a+n);
        init();
        solve();
    }
    return 0;
}
#滴滴#
全部评论
第二题80%是因为没用long long的原因吗。。 这样的话因为没使用long long被坑了两次了,这次长记性了
点赞 回复 分享
发布于 2016-09-23 19:05
第一题要是负数只是加个负号,我是惊呆了。
点赞 回复 分享
发布于 2016-09-23 18:29
第二题一直80%竟然是long long的原因。。。查了快半小时,能试的case都试了,最后问答题都没时间了。。。
点赞 回复 分享
发布于 2016-09-23 17:19

相关推荐

一面052350min1.自我介绍2.在学校里的经历3.你希望测试开发岗位里的测试工作和开发工作占比是多少?4.实习拷打,详细拷打实习中做过的接口自动化项目5.为什么接口自动化项目选择pytest?6.设计测试用例会考虑哪些点?7.用过jekins的什么功能,了解过它底层的实现吗8.技术栈是?熟悉的编程语言?9.口述思路:二叉树的遍历10.手撕:二分查找11.浏览器输入url到展示页面的全流程?12.进程和线程13.死锁14.慢查询15.读过有关测试的技术书籍吗16.写测试自动化时用过python的哪些库?17.反问(作业帮直播业务,给学生直播上课之类的)&nbsp;二面052755min1.自我介绍2...
一笑而过2222:1. String和StringBuffer区别:String是不可变、线程安全(因不可变特性)的,每次操作会创建新对象,适合只读场景;StringBuffer是可变、线程安全(方法加锁)的,可直接修改对象,适用于多线程环境下频繁修改字符串的场景 。 2. Java的垃圾回收器:Java垃圾回收器是JVM自动管理内存的组件,基于分代收集理论,通过标记-清除、复制、标记-整理等算法回收不再使用的对象,常见类型有Serial、Parallel、CMS、G1等,分别适用于不同性能需求场景。 3. Java的序列化:Java序列化是将对象转换为字节序列以便存储或传输的机制,对象所属类需实现Serializable接口,反序列化可将字节流恢复为对象,常用于分布式通信、数据持久化和对象深拷贝等场景。
查看24道真题和解析 面经...
点赞 评论 收藏
分享
求面试求offer啊啊啊啊:要求太多的没必要理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务