遇到一坑题,辗转相除法不用longlong 过不了。
hdu 3959 算概率 很水,
要求:
1.算概率;
2.化简,以分数形式输出;
解法
1.概率公式Cn(m^x)/Cn-1(m^x-1);
2.辗转相除法;
#include<iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
long long gcd(long long a,long long b)
{
return b==0?a:gcd(b,a%b);
}
int main() {
int k;
cin>>k;
for(int i=1;i<=k;i++)
{
long long m,n,d,p=1;
cin>>n>>m;
long long x=m;
while(x<n)
{
x*=m;
p++;
}
x*=p;
d=gcd(x,n);
cout<<"Case "<<i<<": "<<x/d<<"/"<<n/d<<endl;
}
return 0;
}
代码如上;
输入数最多只有10^9,但不用longlong过不了
就是这么坑。
切记以后用辗转相除法,开longlong