输入整数a,求其阶乘结果可以被10的N次方整除时,N的最大值
解法一:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
//输入a
int a;
cout << "input a:\n" << endl;
cin >> a;
//计算a的阶乘
int a_factorial = 1;
for(int i = a; i > 1; i--){
a_factorial *= i;
}
//判断a是否被10的N次方整除,输出N
int N;
for(int i = 1; i < a_factorial; i++)
{
//判断除以10的i次方后与原数是否相等,不相等输出上一个i
if(a != (a/pow(10,i))*pow(10,i){
N = i-1;
}
if(a/pow(10,i) == 0){
break;
}
}
return N;
}
解法二:
看a%10的值是否为0
#include <iostream>
#include <cmath>
using namespace std;
int main(){
//输入a
int a;
cout << "input a:\n" << endl;
cin >> a;
//计算a的阶乘
int a_factorial = 1;
for(int i = a; i > 1; i--){
a_factorial *= i;
}
//判断a余数是否为0,输出N
int N;
do{
if(a%10 == 0){
N++;
}
else break;
}
while(a/10)
cout << "N = :" << N << endl;
return 0;
}