SPOJ 362. Ignore the Garbage 规律+大数除法
2013-08-10 14:06
232 查看
上下颠倒,数字反过来仍是有效数字的有0,1,2,5,6,8,9,反过来就是0,1,2,5,9,8,6.所以这样组成的有效数字是:
0,1,2,5,9,8,6
01,11,21,51,91,81,61
02,12,22,52,92,82,62
05,15,25,,55,95,,85,65
。。。。。
。。。。。
001,101,201,501,901,801,601
可以发现每7个一个循环,同时每个数第一位是0,1,2,5,9,8,6,然后第二个数是7个1,然后是7个2,7个5,,,,就会想到和7进制有关。(可惜方法不是我想到的)
0,1,2,5,9,8,6
01,11,21,51,91,81,61
02,12,22,52,92,82,62
05,15,25,,55,95,,85,65
。。。。。
。。。。。
001,101,201,501,901,801,601
可以发现每7个一个循环,同时每个数第一位是0,1,2,5,9,8,6,然后第二个数是7个1,然后是7个2,7个5,,,,就会想到和7进制有关。(可惜方法不是我想到的)
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #define MAXN 50010 using namespace std; int num[210],len,ans[500],temp; int digit[]= {0,1,2,5,9,8,6}; bool check() { for(int i=0; i<len; i++) if(num[i]) return true; return false ; } int main() { //freopen("in.txt","r",stdin); int cas; char str[210]; cin>>cas; getchar(); while(cas--) { memset(num,0,sizeof(num)); memset(ans,0,sizeof(ans)); cin>>str; len=strlen(str); for(int i=0; str[i]!='\0'; i++) num[i]=str[i]-'0'; temp=0; int t=0; while(check()) { t=0; for(int i=0; i<len; i++) { t=t*10+num[i]; num[i]=t/7; t%=7; } ans[temp++]=t; } for(int i=0; i<temp; i++) cout<<digit[ans[i]]; cout<<endl; } return 0; }
相关文章推荐
- SPOJ 362 Ignore the Garbage 转7进制+简单大数除法
- HDU 1134 卡特兰数 大数乘法除法
- 大数,高精度计算---大数除法
- 51Nod - 1029 大数除法
- (大数||模拟除法、java)L1-6 整除光棍
- hdu 3524 Perfect Squares 打表+找规律+快速幂+除法取余
- 大数加法 减法 乘法 除法 高精度四则运算
- poj2506-Tiling(规律,大数)
- hdu 4759 大数+找规律 ***
- 算法基础: 大数除法-二分法
- △UVA10494 - If We Were a Child Again(大数和整型数的除法、取余)
- 51nod_1029 大数除法
- PAT乙级 1017. A除以B (20)--模拟大数除法
- hdu-1297(找规律+大数加法)
- HDU 5047 Sawtooth (大数模板+找规律)
- hdu_1041(Computer Transformation) 大数加法模板+找规律
- 进制转换小结(大数的任意进制转换)spoj429 Simple Numbers Conversion,poj 1220NUMBER BASE CONVERSION
- 组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数
- 大数系列——大数除法以及求模
- 大数除法