[蓝桥杯2018初赛]乘积尾零-数论
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯2018初赛]乘积尾零-数论
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
如下的10行數據,每行有10個整數,請你求出它們的乘積的末尾有多少個零?
輸出
輸出一個整數表示答案
解題思路:
乘積出現尾零,肯定是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初赛]乘积尾零-数论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用nero刻录系统光盘及MD5校验
- 下一篇: 拼多多批量查询物流方法