遇到一坑题,辗转相除法不用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