标签:font end namespace set bre ret code ++ 知识点
这道题如果你做的话你会发现数据很大,如果直接暴力的话,会炸掉。
所以一般这种情况下,都是有技巧的。?这道题你可以得到一个除数就输出一个除数,直到最后余数等于0时结束。
比如x=13,令m=1,a作为每次的结果除数,因为当m=1和11除以13除数都是0
\(可以不要,辣么m就从111开始,则a=111/13=8,然后输出a,此时m也要变\)
m = 111%13=7;然后让m=7*10+1=71,则a=71/13=5,然后输出a,m=71%13=6
\(然后让m=6*10+1=61,则a=61/13=4,然后输出a,m=61%13=9;然后让m=9*10+1=91\)
\(则a=91/13=7,然后m=91\%13=0,则跳出循环。\)
其实这和我们在草稿纸上计算两个数相除?过程是一样的,只不过在计算机中被分解成了一步一步的运算,直到余数为0。
\(这是我从网上看到的一篇比较好而且较容易理解的思路,所以放到了这里。自己最好在草稿纸纸上演算一下除法过程\)
#include <iostream>
using namespace std;
int main()
{
int x,s = 0,n = 0;
cin >> x;
while(x > s){
s = s * 10 + 1;
n ++;
}
while(1){
cout << s / x;
s = s % x;
if(!s)break;
s = s * 10 + 1;
n ++;
}
cout << " " << n << endl;
return 0;
}
标签:font end namespace set bre ret code ++ 知识点
原文地址:https://www.cnblogs.com/QFNU-ACM/p/12985473.html