日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[蓝桥杯2018初赛]乘积尾零-数论

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯2018初赛]乘积尾零-数论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
如下的10行數據,每行有10個整數,請你求出它們的乘積的末尾有多少個零?

5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 4434 6704 3594 9937 1173 6866 3397 4759 7557 3070 2287 1453 9899 1486 5722 3135 1170 4014 5510 5120 729 2880 9019 2049 698 4582 4346 4427 646 9742 7340 1230 7683 5693 7015 6887 7381 4172 4341 2909 2027 7355 5649 6701 6645 1671 5978 2704 9926 295 3125 3878 6785 2066 4247 4800 1578 6652 4616 1113 6205 3264 2915 3966 5291 2904 1285 2193 1428 2265 8730 9436 7074 689 5510 8243 6114 337 4096 8199 7313 3685 211

輸出
輸出一個整數表示答案

解題思路:
乘積出現尾零,肯定是5和偶數相乘得到的,每出現一個10,就應從乘數中可以提出一個2、一個5。
所以我們把每個數的都分解成乘積的形式 ,統計出 2和 5的數量。

然后取較小那個。答案是31

代碼如下:

#include <iostream> using namespace std;int main() {int n;int er = 0;int wu = 0;for (int i = 1; i <= 100; i++) {cin >> n;while (!(n % 2)) {er++;n = n / 2;}while (!(n % 5)) {wu++;n = n / 5;}}cout << min(er, wu) << endl;return 0; }

優化代碼:

#include <iostream> using namespace std; typedef long long LL; LL ans; LL er, wu;int main() {int n;for (int i = 1; i <= 100; i++) {cin >> n;while (!(n % 10)) {ans++;n = n / 10;}while (!(n % 2)) {er++;n = n / 2;}while (!(n % 5)) {wu++;n = n / 5;}}cout << min(wu, er) + ans << endl;return 0; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[蓝桥杯2018初赛]乘积尾零-数论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。