uva10624Super Number
来源:互联网 发布:y系列电机数据大全图片 编辑:程序博客网 时间:2024/06/05 03:39
核心问题就是大数取余,开始时竟然没想到。。。理解一种技巧和掌握一种技巧之间还是有一段距离的。。。
为什么我看大神的代码,感觉他的代码其实和我比起来考虑的东西更少,可以说效率会比我低,但大神却有胆量那样写,真的是艺高人胆大啊。。。大神开始只考虑主要矛盾,再解决次要矛盾?
的确啊,看我的代码,感觉我处处都是在担心什么,而看大神的代码,感觉就是信手拈来,怎么舒服怎么写,这就是差距啊。。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int N,M,flag;char s[35],map[10][11]={{1,0},{10,0,1,2,3,4,5,6,7,8,9},{5,0,2,4,6,8},{10,0,1,2,3,4,5,6,7,8,9},{5,0,2,4,6,8},{2,0,5},{5,0,2,4,6,8},{10,0,1,2,3,4,5,6,7,8,9},{5,0,2,4,6,8},{10,0,1,2,3,4,5,6,7,8,9},};int next(){ if(N==1) return 0; int i,j=1,t; for(i=N-2;i>=0;i--) { t=s[i]+j-'0'; s[i]=t%10+'0'; j=t/10; } if(s[0]!='0') return 1; return 0;}int is(int cur){ int i,j,t=0; for(i=0;i<=cur;i++) { t=(t*10+s[i]-'0')%(cur+1); } //printf("%d %d %s\n",cur,t,s); if(t==0) return 1; else return 0;}void dfs(int cur){ if(flag==1) return ; if(cur==M) { flag=1; return ; } int i,j; for(i=1;i<=map[(cur+1)%10][0];i++) { if(cur==0&&map[(cur+1)%10][i]==0) continue; s[cur]=map[(cur+1)%10][i]+'0'; if(is(cur)) dfs(cur+1); if(flag==1) return ; }}void solve(){ flag=0; do { dfs(N-1); if(flag==1) break; }while(next());}int main(){ int t,i,j,count=1; scanf("%d",&t); while(t--) { memset(s,'0',35); scanf("%d %d",&N,&M); s[M]=0, s[0]='1'; printf("Case %d: ",count++); solve(); if(flag==0) printf("-1\n"); else puts(s); } return 0;}
0 0
- uva10624Super Number
- Number
- number
- number
- Number
- number
- number
- Number
- Number
- NUMBER
- Number
- Number()
- number
- Number
- Number
- E: number number number
- 1005 number number number
- HDU6198 number number number
- 使用docker的优点
- 单处理机也称CPU,那么多处理机又叫做什么呢?
- do{...}while(0)的意义和用法
- Web开发经验记录点,
- 透明计算的特点
- uva10624Super Number
- Redis学习手册(Sorted-Sets数据类型)
- 通过cpuid指令获取CPU Verdor ID
- java小结_016_泛型
- 【黑马程序员】Java基础知识(一)
- 大雄宝殿的“大雄”是什么意思
- 常见算法在实际项目中的应用
- 流编辑器sed使用总结及利用sed从文本中提取字符串的方法
- Linux 入门教程