[蓝桥杯2018初赛]乘积尾零-数论
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯2018初赛]乘积尾零-数论
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
如下的10行數(shù)據(jù),每行有10個(gè)整數(shù),請(qǐng)你求出它們的乘積的末尾有多少個(gè)零?
輸出
輸出一個(gè)整數(shù)表示答案
解題思路:
乘積出現(xiàn)尾零,肯定是5和偶數(shù)相乘得到的,每出現(xiàn)一個(gè)10,就應(yīng)從乘數(shù)中可以提出一個(gè)2、一個(gè)5。
所以我們把每個(gè)數(shù)的都分解成乘積的形式 ,統(tǒng)計(jì)出 2和 5的數(shù)量。
然后取較小那個(gè)。答案是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; }優(yōu)化代碼:
#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; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯2018初赛]乘积尾零-数论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用nero刻录系统光盘及MD5校验
- 下一篇: [蓝桥杯2018初赛]第几个幸运数-数论