C++アルゴリズムトレーニングP 0505
アルゴリズムトレーニングP 0505
1つの整数nの階乗はnと書くことができます!,1からnまでのn個の整数の積を表す.階乗の成長速度は非常に速く、例えば、13!すでに大きくなって、もう1つの整数変数に保存できません.そして35!さらに大きくなり、浮動小数点型変数に格納できません.したがって,nが比較的大きい場合,nを計算する!とても難しいです.幸いなことに、本題では、私たちの任務はnを計算することではありません!、nを計算するのです!一番右の0以外の数字はいくらですか.たとえば、5!=12345=120なので、5!一番右の0以外の数字は2です.さらに、7!=5040、だから7!一番右の0以外の数字は4です.さらに、15!=1307674368000なので、15!一番右の0以外の数字は8です.プログラムを作成し、整数n(0)を入力してください.
入力:7出力:4
コード#コード#
1つの整数nの階乗はnと書くことができます!,1からnまでのn個の整数の積を表す.階乗の成長速度は非常に速く、例えば、13!すでに大きくなって、もう1つの整数変数に保存できません.そして35!さらに大きくなり、浮動小数点型変数に格納できません.したがって,nが比較的大きい場合,nを計算する!とても難しいです.幸いなことに、本題では、私たちの任務はnを計算することではありません!、nを計算するのです!一番右の0以外の数字はいくらですか.たとえば、5!=12345=120なので、5!一番右の0以外の数字は2です.さらに、7!=5040、だから7!一番右の0以外の数字は4です.さらに、15!=1307674368000なので、15!一番右の0以外の数字は8です.プログラムを作成し、整数n(0)を入力してください.
入力:7出力:4
コード#コード#
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int s=1;
for(int i=1;i<=n;i++)
{
s=s*i;
while(s%10==0)
s=s/10;
//
if((s*(i+1))%10==0)
continue;
s=s%10;
}
cout<<s;
}