poj 1426 Find The Multiple(DFS或打表)
来源:互联网 发布:java发邮件excel附件 编辑:程序博客网 时间:2024/05/22 00:23
大概题意就是找出一个1~200间的一个数字n,找出一个只由1,0组成的数m,使m被n整除。
第一种 思路是dfs,搜到一种满足题意的答案就ok了。
用的时间比较多。
用unsigned long long 解决了大数问题。
代码:
#include<stdio.h>int n;bool flag;void dfs(unsigned long long a,int dep){ if(flag||dep==19) return ; if(a%n==0) { flag=1; printf("%I64u\n",a); return ; } else { dfs(a*10,dep+1); dfs(a*10+1,dep+1); } return ;}int main(){ while(scanf("%d",&n)!=EOF) { if(n==0) break; flag=0; dfs(1,0); } return 0;}
第二种思路是打表,不用考虑大数问题:
因为数据比较少,所以考虑把所有数都打出来。
首先打表的代码:
#include<stdio.h>int n;bool flag;unsigned long long max;FILE *fout = fopen ("num.txt", "w");void dfs(unsigned long long a,int dep){ if(flag||dep==19) return ; if(a%n==0) { flag=1; fprintf(fout,"\"%I64u\",",a); //打出两百个数的表 if(a>max) max=a; return ; } else { dfs(a*10,dep+1); dfs(a*10+1,dep+1); } return ;}int main(){ max=0; for(n=1; n<=200; n++) { flag=0; dfs(1,0); } fprintf(fout,"\n%I64u",max);//寻找最大一个数有多少位 return 0;}
0s杀的代码:
#include<stdio.h>char num[][20]={"1","10","1000000000000000011","100","10","1000000000000000110","1000000000000000111","1000","1000000000011111111","10","100000000000000001","1000000000000001100","1000000000000001","10000000000000010","1000000000000000110","10000","10000000000000101","1000000000111111110","1000000000000001101","100","10000000000000101","1000000000000000010","1000000000000010111","1000000000000011000","100","10000000000000010","1000000000101111111","100000000000000100","1000000000000000111","1000000000000000110","1000000000000110011","100000","1000000000000101111","100000000000001010","10000000000000010","1000000001111111100","100000000000000011","10000000000000110","10000000000000101","1000","1000000000000010111","100000000000001010","1000000000000010101","100000000000000100","1000000000111111110","100000000000001110","1000000000000101","1000000000000110000","1000000000000011101","100","10000000000000101","100000000000000100","1000000000000000011","1000000001101111110","1000000000000000010","1000000000000001000","1000000000000011","1000000000000001010","10000000000000011","1000000000000001100","1000000000000011","100000000001110010","1000000001011101111","1000000","10000000000000010","1000000000000111110","100000000000011","1000000000000010100","100000000000011","10000000000000010","1000000000000100101","1000000011111111000","1000000000001","1000000000000000110","1000000000000001100","100000000000001100","1000000000000001","100000000000001010","100000000000110001","10000","1000000000111111101","1000000000000110110","100000000000001101","1000000000000010100","100000000000001010","100000000000010010","100000000000000101","1000000000000001000","1000000000000011011","1000000000111111110","1000000000000001","1000000000000011100","1000000000001111001","10000000000001010","10000000000000110","1000000000001100000","100000000001111","1000000000000111110","1101111111111111111","100","1000000000000000001","100000000000001010","100000000000000001","1000000000000001000","100000000000001010","100000000010000110","10000000000001001","1000000001111111100","1000000000001000011","1000000000000000010","100000000000000011","100000000000110000","1000000000000111101","10000000000000110","100000000000001110","10000000000000100","1000000001101111101","100000000000000110","10000000000000101","1000000000000011000","1000000000000101111","10000000000000110","1000000001100011001","1000000000011100100","1000","1000000001111011110","1000000000000110101","10000000","10000000000001001","10000000000000010","10000000001101","1000000000010111100","1000000000001010001","1000000000000110","1000000001101111110","100000000000111000","1000000000001","1000000000000110","1000000000001001111","100000000000000100","1000000000000101","1000000000011110","1000000000000001","1000000111111110000","1000000000000001010","10000000000010","100000000000011111","1000000000000010100","10000000000001111","1000000000000001100","1000000000010111001","1000000000000011000","1000000000111111101","10000000000000010","100000000001110010","1000000000000010100","1000000000000101","1000000000001100010","1000000000000000011","100000","1000000000001101001","100000000111111110","1000000000011011101","1000000000001110100","1000000000000111110","1000000000000011010","1000000000001001101","10000000000011000","1000000000001100111","100000000000001010","1000000000111111011","1000000000000100100","1000000000000010111","1000000000000001010","100000000000000100","100000000000010000","10000000000000011","100000000000001110","1000000000000100111","1000000001111111100","10000000000000111","10000000000000010","1000000000000011","100000000000011000","1000000000000000110","10000000001101110","100000000001001001","100000000000010100","1000000010111010111","10000000000000110","1000000000011111101","1000000000011000000","1000000010000100001","1000000000011110","100000000000001010","100000000010010100","100000000000111001","1111111111111111110","1000000000101111001","1000"};int main(){ int n; while(scanf("%d",&n)!=EOF) { if(n==0) break; printf("%s\n",num[n-1]); } return 0;}
0 0
- poj 1426 Find The Multiple(DFS或打表)
- Poj 1426--Find The Multiple(bfs或dfs)
- POJ 1426 Find The Multiple (DFS)
- POJ - 1426 - Find The Multiple (DFS)
- POJ 1426 Find The Multiple(dfs)
- POJ 1426 Find The Multiple(dfs)
- POJ 1426 Find The Multiple(dfs)
- poj 1426 Find The Multiple(DFS)
- POJ 1426Find The Multiple(DFS)
- POJ 1426 Find the Multiple(dfs)
- POJ-1426-Find The Multiple(DFS)
- POJ 1426 Find The Multiple(bfs+打表)
- 【DFS】poj 1426 Find The Multiple
- POJ 1426 Find The Multiple(DFS构造)
- POJ 1426 Find The Multiple (DFS + 构造)
- Poj 1426 Find The Multiple 【DFS】
- DFS-POJ-1426-Find The Multiple
- poj 1426 Find The Multiple ( dfs )
- (libgdx小结)资源加载器
- 美味书签宣布将关闭服务
- Binary Tree Level Order Traversal
- 关于字符串反转和字符串数值间的转换
- 轻松搞定面试中的二叉树题目
- poj 1426 Find The Multiple(DFS或打表)
- JVM启动参数设置
- 双栈结构_表达式求值
- 【Java基础】类的实例化、static、父类构造函数执行顺序
- 7条经典传统定律指导网站运营
- 组合和继承
- 框架篇:一(网易新闻)+ 单例的另外一种方法创建
- Java RandomAccessFile用法
- ExpandableListView 点击打开