求助!!
  • 板块灌水区
  • 楼主wujunrui2012
  • 当前回复18
  • 已保存回复18
  • 发布时间2024/5/21 16:46
  • 上次更新2024/5/21 19:21:07
查看原帖
求助!!
1150675
wujunrui2012楼主2024/5/21 16:46

几的阶乘

输入一个整数

n 的阶乘的结果,求这个整数 n。

比如输入

120 ,因为 120= 1 × 2 × 3 × 4 × 5

5 ! 120=1×2×3×4×5=5! ,所以输出 5。

输入格式

一行,一个长度不超过 3000 3000 位的整数。

输出格式 一行,一个整数。

#include<bits/stdc++.h>
using namespace std;
struct answer{
    string quo;
    long long rem;
};
answer div(string x,long long y){
    answer ans = {"",0};
	long long a[10005]={};
	int len=x.size();
	for(int i=1;i<=len;i++)a[i]=x[i-1]-'0';
	for(int i=1;i<=len;i++){
		ans.quo=ans.quo+char((ans.rem*10+a[i])/y+'0');
		ans.rem=(ans.rem*10+a[i])%y;
	}
	while(ans.quo[0]=='0'&&ans.quo.size()>1)ans.quo.erase(0,1);
    return ans;
}
int main(){
    string a;
    long long b=1;
    cin>>a;
    answer ans;
    while(ans.rem!='0'){
    ans = div(a,b);
    b++;
    }
    cout<<b;
    return 0;
}

求助 T-T(我0分T-T)

2024/5/21 16:46
加载中...