25 条题解
-
19
题目要求:s=a+aa+aaa+...aa..aa, 比如:读入5,s=5+55+555+5555+55555=61725
理一下思路:
1.n表示进行运算的数字,也表示循环的次数。 2.sum存储算式的和。 3.sacn表示算式中的每个数。 4.mm代表i 如:n=3--循环3次
一次 二次 三次 i=1 i=2 i=3 sacn=3 sacn=33 sacn=333 sum=3 sum=36 sum=369 输出sum;
(正常输入n,循环n次用中间变量k去统计位数, 中间变量ans定义当前值,sum去累加。)
OK上代码:
代码如下:
#include <bits/stdc++.h> using namespace std; int main() { int n,sum=0,ans,k; cin>>n; for(int i=1;i<=n;i++) { ans=n; //给ans定义初始值 k=i; //记录次数,不可直接用i会导致循环出错 while(--k) { ans=ans*10+n; //定义当前值 } sum+=ans; //累加 } cout<<sum; return 0; }
题解不易,点个赞呗😁
-
4
先来思路
(此思路以a=2为准)
次数 一 二 三 i 1 2 3 num 2 22 222 sum 24 246 可以用for循环将a加入num末尾 好了
再上程序
#include <cstdio> using namespace std; int main(){ int a,num,sum=0; scanf("%d",&a); for(int i=1;i<=a;i++){//I表示num中a的个数 num=0;//初始化num for(int j=1;j<=i;j++)num=num*10+a;//通过把num十进制左移一位再加a来吧a加入末尾 sum+=num; } printf("%d",sum); return 0; }//以AC,请放心食用
-
2
#include<bits/stdc++.h> using namespace std; int main() { int s=0,a; cin>>a; for(int i=0;i<a;i++) { s+=a*(a-i)*pow(10,i); } cout<<s; }
解题思路: 观察 比如:读入5,a=5+55+555+5555+55555=61725 所有个位数相加是aa1; 十位数相加是a*(a-1)10; 百位数相加是a(a-2)100; ······· 以此得出:a(a-i)*pow(10,i) 然后累加到s就可以了。 已AC,放心食用,第一次发题解好开心!
-
2
1: 1 * 1 2: 2 * 1+2 * 11 a[1,11,111,...]
#include<bits/stdc++.h> using namespace std; int main(){ int a[10],s; cin>>s;
定义+输入
//暴力起步! a[1]=1; a[2]=11; a[3]=111; a[4]=1111; a[5]=11111; a[6]=111111; a[7]=1111111; a[8]=11111111; a[9]=111111111;
数组定义如上
int ans=0; for(int i=1;i<=s;i++){ ans+=s*a[i]; }cout<<ans; return 0; }
-
1
最暴力的方法(没有之一)
#include <iostream> using namespace std; int main() { int n; cin >>n; if (n == 1) cout << 1; if (n == 2) cout << 24; if (n == 3) cout << 369; if (n == 4) cout << 4936; if (n == 5) cout << 61725; if (n == 6) cout << 740736; if (n == 7) cout << 8641969; if (n == 8) cout << 98765424; if (n == 9) cout << 1111111101; return 0; }
-
1
//水平有限,没有办法直接在递归中完成,哪位大神指点一下怎么一步到位! #include<iostream> using namespace std; int s,sum; int f(int a,int n) { if(n==1)return a;//递归的终止条件:当n等于1的时候就返回a; return a+f(a,n-1)*10;//一直到a是个位数为止,否则一直*10+a产生a个数位的a; } int main() { int a; cin>>a; s=f(a,a); while(s>0){ sum+=s;//从a位数位的a开始累加; s/=10;//每次减少一个数位; } cout<<sum; return 0; }
-
1
很难
理一下思路:
1.n表示进行运算的数字,也表示循环的次数。 2.sum存储算式的和。 3.sacn表示算式中的每个数。 4.mm代表i 如:n=3--循环3次
一次 二次 三次 i=1 i=2 i=3 sacn=3 sacn=33 sacn=333 sum=3 sum=36 sum=369 输出sum;
OK上代码:
#include using namespace std; int n,sum,sacn,mm; int main() { cin>>n; for(int i=1;i<=n;i++) { sacn=n; mm=i; while(--mm) { sacn=sacn*10+n; } sum+=sacn; } cout<<sum; return 0; }
-
0
过辣!一时暴力一时爽,一直暴力一直爽!
#include <bits/stdc++.h> using namespace std; int main() { int n,sum=0; // a[0], a[1], a[2],a[3],a[4], a[5], a[6], a[7], a[8], a[9] int a[11]={1,1,11,111,1111,11111,111111,1111111,11111111,111111111}; scanf("%d",&n); for (int i=1;i<=n;i++)sum+=(n*a[i]); printf("%d",sum); ;;;;;; return 0; }
-
0
#include <bits/stdc++.h> using namespace std; int ans = 10,a,num[10],sum; int main(){ cin >> a; num[1] = a; num[2] = 10*a + num[1]; sum += (num[1]+ num[2]); for(int i = 3;i <= a;i++){ ans = 10; num[i] = ansa + num[i - 1]; sum += num[i]; } cout << sum; } 其实,这题可以理解成“前缀和”的亲戚,将数组中每个数确定后相加;我没有用平方,其实用一个数每次计算后乘十也行具体看代码;编排有问题,见谅;
-
0
思路:暴力拆除 如果n=1; 输出:1; 如果是2; 输出:122; 如果是3; 输出:1233; 同理…… 最后: return 0; }
int n,sum=0;
cin<<n;
if (n==1)//如果n是1
cout >>1;//那么输出1
else if (n==2)//如果n是2
cout >>210+22;//那么输出2*12
else if (n==3)//以此类推
cout >>3100+320+3*3;
else if (n==4)
cout >>41000+4200+430+44;
else if (n==5)
cout >>510000+52000+5300+540+5*5;
else if (n==6)
cout >>6100000+620000+63000+6400+650+66;
else if (n==7) { cout >>71000000+7200000+730000+74000+7500+760+7*7;
else if (n==8)
cout >>810000000+82000000+8300000+840000+85000+8600+870+88;
else if (n==9)
cout >>9100000000+920000000+93000000+9400000+950000+96000+9700+980+9*9;
return 0;
//代码中有语法错误 无法直接抄写。
-
0
暴力出奇迹
#include <iostream>//hetao3097453 using namespace std; int a[10],sum; int main() { a[1] = 1; a[2] = 11; a[3] = 111; a[4] = 1111; a[5] = 11111; a[6] = 111111; a[7] = 1111111; a[8] = 11111111; a[9] = 111111111; int n; cin >> n; for(int i = 1;i <= n;i++) { sum += n * a[i]; } cout << sum; return 0; }
信息
- ID
- 245
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1328
- 已通过
- 656
- 上传者