赞
踩
目录
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int cnt;
-
- int main()
- {
- for (int i = 1; i <= 2020; i++)
- {
- for (int j = i; j; j /= 10)
- if (j % 10 == 2) cnt++;
- }
- printf("%d", cnt);
- return 0;
- }
- #include<iostream>
- #include<algorithm>
- using namespace std;
- long long sum;
-
- int main()
- {
- for (int i = 1; i <= 2019; i++)
- {
- for (int j = i; j; j /= 10)
- {
- if (j % 10 == 2 || j % 10 == 0 || j % 10 == 1 || j % 10 == 9)
- {
- sum += i * i;
- break;
- }
- }
- }
- printf("%lld", sum);
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
这道题有两种方法
1:就是直接算,算出两个数的乘积以后,先判断末尾有几个零,再之后,就可以把零去掉然后取数的后四位再与下一个数相乘。
2:分解质因数,看看有多少个5以及多少个2。
从后往前数0的个数
- #include<iostream>
- #include<algorithm>
- using namespace std;
- int a[11][11];
- int cnt;
-
- int main()
- {
- long long sum = 1;
- for (int i = 0; i < 10; i++)
- {
- for (int j = 0; j < 10; j++)
- {
- scanf("%d", &a[i][j]);
- sum *= a[i][j];
- while (sum % 10 == 0)
- {
- cnt++;
- sum /= 10;
- }
- //if (sum > 10000)
- sum = sum % 10000;
- }
- }
- printf("% d", cnt);
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
分解质因数法
- #include<iostream>
- using namespace std;
- int a[11][11];
- int cnt;
- int sum2, sum5;
- //分解质因子,数出2和5搭配的对数
- //2的个数
- int fun_2(int num)
- {
- int sum = 0;
- while (num % 2 == 0)
- {
- num /= 2;
- sum++;
- }
- return sum;
- }
- //5的个数
- int fun_5(int num)
- {
- int sum = 0;
- while (num % 5 == 0)
- {
- num /= 5;
- sum++;
- }
- return sum;
- }
- int main()
- {
- for (int i = 0; i < 10; i++)
- {
- for (int j = 0; j< 10; j++)
- {
- scanf("%d", &a[i][j]);
- sum2 += fun_2(a[i][j]);
- sum5 += fun_5(a[i][j]);
- }
- }
- cnt = min(sum2, sum5);
- //(sum2 + sum5) / 2;//错误写法
- //(2 * sum2 + 5 * sum5) / 7;//错误写法
- printf("%d", cnt);
-
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
经典双循环
- #include<iostream>
- using namespace std;
-
- int main()
- {
- int num1=2021,flag=0;
- for(int i=1; ;i++)//不知道i到哪个数停止,所以i=1到...(未知)
- {
- flag=i;
- for(int j=i;j;j/=10)//判断每个数i的每一位的数字是什么
- {
- if(j%10==1) num1--;
- if(num1==0)
- {
- cout << flag << endl;
- return 0;
- }
- }
- }
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
异曲同工
- #include <iostream>
- using namespace std;
- int num[10];
- bool check(int x)
- {
- while (x)
- {
- int now = x % 10;
- if (num[now] > 0)
- num[now]--;
- else
- return false;
- x /= 10;
- }
- return true;
- }
- int main()
- {
- for (int i = 0; i < 10; i++)
- num[i] = 2021;
- for (int i = 1; ;i++)
- {
- if (!check(i)) //如果该数i已经用完了
- {
- cout << i - 1 << endl;//这个i是拼不出来的,所以只能拼出i-1
- break;
- }
- }
- return 0;
- }
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。