标签:10 dlen int PTA ++ 光棍 chu 整除 yu
一、题目描述
二、解题思路
这里我们直接枚举1的个数,然后看看是否能够整除,就是个大数除法的内容。这里注意中间可能有为0的情况,列如530 / 5 = 106中间这个0要注意。
这里大数除法是这样进行的。
比如说123 / 5
第一次1 / 5为0,那么第一个就为0,余数为1
第二次利用上次的余数*10 + 当前的数值2 对5求余 的 2
第三次也同上(2 * 10 + 3)% 5 = 3
和直接对123 % 5 == 3一样的结果。
三、代码实现
1 #include <bits/stdc++.h> 2 using namespace std; 3 int len = 0; 4 int num[10010]; 5 int dnum[10010]; 6 int dlen = 0; 7 int x; 8 bool solve() 9 { 10 int yu,chu; 11 yu = chu = 0; 12 dlen = 0; 13 for(int i = 0;i < len;i++){ 14 chu = chu * 10 + num[i]; 15 yu = (yu * 10 + num[i]) % x; 16 if(chu >= x){ 17 dnum[dlen++] = chu / x; 18 chu = chu % x; 19 } 20 else { 21 dnum[dlen++] = 0; 22 } 23 } 24 return !yu; 25 } 26 int main() 27 { 28 cin >> x; 29 bool ok =false; 30 while(1){ 31 num[len++] = 1; 32 if(solve()) 33 ok = true; 34 if(ok) 35 break; 36 } 37 int i = 0; 38 while(i < dlen && dnum[i] == 0) 39 i++; 40 for(;i < dlen;i++) 41 cout << dnum[i]; 42 cout << ' ' << len << endl; 43 return 0; 44 }
标签:10,dlen,int,PTA,++,光棍,chu,整除,yu 来源: https://www.cnblogs.com/scannerkk/p/16026902.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。