zq-zq

 

思路:

  1. 对于C语言中,即便 long 型也存放不了100个9,所以不能单纯通过暴力计算;

  2. 采用数组模拟数据,数组每个空间存放计算结果的一位数据;

  3. 通过数据从最低位到最高位的每位加法操作,利用加法步骤计算得到最终结果;

  4. 一个个数相加过于幸苦,可以将所有的相同位一次性相加,比如所有个位相加,对10取余数即是个位的结果,再依次类推;

C++代码:

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 //开辟全局数组存放结果 
 6 int result[200];
 7 
 8 void solve() {
 9     //cat:进位(初始为0); mod:余数 
10     int k, a, n, cat = 0, mod;
11     cin>> a>> n;
12     //从最低位开始累加求解 
13     for(k=0; k<n; k++) {
14         //如1 10, 拥有个位的数是10个, 拥有十位的数有9个, 类推 
15         cat = (n-k)*a + cat;
16         //一次可以确定一个位的最终数据 
17         mod = cat%10;
18         //对10取整就是进位 
19         cat /= 10;
20         //存储当前位确定数字 
21         result[k] = mod;
22     }
23     //若进位未空, 则处理剩余进位 
24     while(cat) {
25         //同上述操作 
26         
27 mod = cat%10; 28 cat /= 10; 29 result[k++] = mod; 30 } 31 //逆序打印计算结果 32 for(int i=k-1; i>=0; i--) { 33 cout<< result[i]; 34 } 35 cout<< endl; 36 } 37 38 int main() { 39 solve(); 40 41 return 0; 42 }

 

分类:

技术点:

相关文章:

  • 2021-07-09
  • 2021-05-10
  • 2022-01-16
  • 2021-12-25
  • 2021-12-18
  • 2021-12-19
  • 2022-12-23
  • 2021-06-13
猜你喜欢
  • 2022-01-15
  • 2021-09-08
  • 2021-10-04
  • 2021-06-30
  • 2021-11-24
  • 2021-09-01
  • 2021-10-31
相关资源
相似解决方案