
uj5u.com熱心網友回復:
y的計算不對,自己和以下代碼對比一下吧while(x<=n) {
y = y*10 + a;
s += y;
x++;
}
cout<<s;
uj5u.com熱心網友回復:
用你原來的代碼是while(x<=n) {
s=pow(10,x)*a + y;
m += s; //改這里也可以,m不斷累加s
y = s; //y記錄上一次算出的s
x++;
}
uj5u.com熱心網友回復:
這道題不簡單,有些麻煩。結果的話。那當然是12345678901234567890132...*a就是了。
但越界是個問題,
進位也是一個問題。不過好在回圈中有一個0作為截斷的地方。則可以分段計算即可。
比如n = 23,a = 7的時候。
結果就是
012345678901234567890123 * 7;
即:再列印輸出的時候,每次的乘法進位會被0所截止 ,所以剛好可以分段計算并列印。
即:
0123456789*7 = 864197523----0123456789 *7 = 0864197523 ----0123 * 7 = 0861
也就是分三次列印:864197523 0864197523 0861(第一個0就不要了)
所以n = 23、a = 7時, 012345678901234567890123 * 7 = 864197523 0864197523 0861;
0123456789 * {
1 = 0123456789;
2 = 0246,913,578;
3 = 0370,370,367?,
4 = 0493,827,156?,
5 = 0617,283,945,
6 = 0740,740,734?,
7 = 0864,197,523?,
8 = 0987,654,312?,
9 = 1,111,111,101?
}
建立一列映射關系就不用再計算了。只需要計算最后一個0開始的后面的乘積
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/104448.html
標籤:新手樂園
下一篇:如何用程式取消觸摸板的觸摸反饋
