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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蓝桥练习-算法训练 P0505

發布時間:2024/2/28 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥练习-算法训练 P0505 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個整數n的階乘可以寫成n!,它表示從1到n這n個整數的乘積。階乘的增長速度非常快,例如,13!就已經比較大了,已經無法存放在一個整型變量中;而35!就更大了,它已經無法存放在一個浮點型變量中。因此,當n比較大時,去計算n!是非常困難的。幸運的是,在本題中,我們的任務不是去計算n!,而是去計算n!最右邊的那個非0的數字是多少。例如,5!=1*2*3*4*5=120,因此5!最右邊的那個非0的數字是2。再如,7!=5040,因此7!最右邊的那個非0的數字是4。再如,15!= 1307674368000,因此15!最右邊的那個非0的數字是8。請編寫一個程序,輸入一個整數n(0<n<=100),然后輸出n!最右邊的那個非0的數字是多少。
輸入:
  7
輸出:
  4

?

AC:

#include <iostream> using namespace std;int n; long long ans = 1; int main() {scanf("%d", &n);for(int i = n; i >= 2; i--){ans *= i;while(ans % 10 == 0){ans /= 10;}ans = ans % 100;}printf("%lld", ans % 10);return 0; }

這種題既然是算法訓練題,肯定不能遞歸解決,肯定會超時。而且競賽一般都不用遞歸,所以盡量進行優化。

第一次拿了70分,只考慮了后面去0的情況,后面輸入35,發現輸出-2,就知道是超出數字范圍。繼續進行優化,只考慮數字最后一位,運行發現15!最后一位不對了,拿起筆驗算,發現乘一個數字后兩位都會影響。最后終于AC了。

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的蓝桥练习-算法训练 P0505的全部內容,希望文章能夠幫你解決所遇到的問題。

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