リンクします。http://lx.lanqiao.cn/problem.page GPID = T512?
リソースの制約
制限時間:メモリ制限が1.0S:256.0メガバイト
整数N Nの階乗!、1からの積として書かN Nの整数を表すことができます。階乗はたとえば、13のために、非常に速く成長しています!、すでに比較的大きな整数の変数に保存することができなかった、と35!さらに大きくなり、フロート変数に保存することができませんでした。したがって、nは大きい場合、nは計算に!それは非常に困難です。幸いなことに、この問題では、私たちの仕事は、計算にN!が、計算するのではありませんnは!右端の桁はゼロ以外の数値です。例えば、5!= 1 * 2 * 3 * 4 * 5 = 120、それほど0~2ない5!右端の桁。ここでも、7!= 5040、そう7!右端の桁は、非ゼロ4です。ここでも、15!= 1,307,674,368,000、その15!右端の非ゼロ桁が8です。プログラムを書く、整数N(0 <N <= 100)、出力がn!右端の桁が非ゼロ番号を入力。
入力:
7
出力:
4
アイデア:最後の非ゼロ値の結果、唯一の要件ビット、ゼロは+結果の範囲を限定するために、残りを取るデ私たちは、それぞれの時間をかけることによって得られますが、トップを引き継ぐことで、いくつかのストレスは、我々が考慮しなければならないので、私たちは1000ができるように思われる、この質問(10,000人以上の結果にユースケースを各時間がかかりますので、2進数の0 &&既知の問題のn <= 100のビット数を乗じた後、唯一、千まで運びます)によります
1つの#include <iostreamの> 2 使用して 名前空間STD; 3 INT メイン(){ 4。 int型 N-、CNT = 1 ; 5 CIN >> N-; 6 用(INT I = 2 ; I <= N; I ++ ){ 7 CNT * = I; 8 ながら(CNTの%10 == 0){ // バック0を削除 9。 CNT / = 10 ; 10 } 11。 CNT = CNT%10000 ; //予約4ビットは、スコープ定義 12である } 13は COUT%のCNT << 10 << ; ENDL 14 リターン 0 ; 15 }