ブルーブリッジカップALGO-189 P0505

リンクします。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 }

 

  
 

おすすめ

転載: www.cnblogs.com/NoWhiteBut/p/12552683.html