解题报告:ZOJ3457 Absence Number (打表+数学)
2016-05-03 11:03
513 查看
题意:
输入n(00到99),求一个最小的正整数ans使得 1/ans 除去前导零的小数位上包含00到99中除了n的所有数。
分析:
n的范围比较小,考虑打表,每个m的小数点后位数最多m次会重复,所以每个m循环m+1次然后进行一次包含数的判断,如果包含了除去某个数的其余所有数,那么m就是对应这个数的答案,用0标识取得最小答案。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; /******************************************打表代码*************************************************************** int ans[100]; bool have[100]; int dig[1000000]; int d,num=0; inline bool pass(){ for(int i=0;i<100;i++) if(!ans[i])return false ; return true ; } inline void oper(int& value ,int n){ value*=10; int x = value/n; dig[d++] = x; } inline void get(){ int x = 0 ; for(int i=0;i<d;i++){ x = ( x*10+dig[i] ) %100; have[x] = true; } } inline void done(int in){ get(); int none = 0;int x; for(int i=0;i<100&&none<=1;i++){ if(!have[i]){ x=i;none++; } }if(none==1&&!ans[x]){ ans[x] = in ;num++; } } *************************************************************************************/ int ANS[100]={ 76344,27839,2938,5246,8662,13161,7412,7843,3386,4566,8596,981,1654 ,5609,2623,11357,5703,13634,1269,7067,10146,7748, 1017,2006,13987,2737,1007,9269,2191,9633,5637,17406, 4746,327,19798,10219,6902,11815,7869,731,5972,5473,8849, 9822,3222,16274,2751,22414,2183,5974,7573,5391,6837,8762, 7747,1962,5629,9691,10158,1493,1462,15796,3594,8109,2359,14382 ,339,6873,19194,10262,5459,5163,20049,4028,3113,27279,1003 ,3924,1937,2679,5183,3378,2969,21395,13907,3074,4911,827,6471,4279,2283,8465,2538,527,17751,7526,9422,7345,5083,791 }; int main() { /*********************打表代码 freopen("data.in","w",stdout); for(int n=101;num<100;n++){ int value = 10;d = 0; while(value<n)value*=10; memset(have,false,sizeof(have)); memset(dig,false,sizeof(dig)); for(int i=0;i<=n&&value;i++){ oper(value,n) ; value %= n; } done(n); } for(int i=0;i<100;i++)printf("%d,",ans[i]); return 0; *********************/ int n; while(scanf("%d",&n)==1){ printf("%d\n",ANS ); } }
相关文章推荐
- CSS中position:relative;的作用
- Androdi Application作用
- kvo浅析与实例
- 每天一个linux命令(31): /etc/group文件详解
- Linux的sort命令
- 如何控制dedecms描述的长度?
- 关键字static的作用
- MySQL执行计划解读
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项