HDU-5970-最大公约数(合肥CCPC J题)-数学推导+找规律
2016-11-05 19:43
369 查看
题目连接
题意:求如题目所给的式子的值。
思路:由性质可得f(i+j∗k,j)和f(i,j)相同,此式子易得。而这两个式子中的c也相同。
(i+(k+d∗c)∗j)∗jc∗g∗g,其中0<=k<c
对于一组(i,j),有一个特定c然后可以求这个c的循环节,然后在凑上多余的数随便搞搞。
具体看代码
#include<bits/stdc++.h> using namespace std; long long n,m,p; long long a[711][711]; int v[711][711]; long long gcd[711][711]; long long tmp[30]; void f(long long x,long long y) { long long xx=x,yy=y; int c=0; long long tt; while(y>0) { c++; tt=x%y; x=y; y=tt; } a[xx][yy]=c*x*x; v[xx][yy]=c; gcd[xx][yy]=x; } void init(void) { for(int j=1;j<=670;j++) { for(int i=1;i<=670;i++) { // cout << i << " " << j << endl; f(i,j); } } } int main() { init(); int t; scanf("%d",&t); while(t--) { scanf("%lld%lld%lld",&n,&m,&p); long long ans=0; for(long long j=1;j<=m;j++) { for(long long i=1;i<=j;i++) { long long tot=0; int c=v[i][j]; long long g=gcd[i][j];///i,j的gcd long long tt0=n/j; if(i<=(n%j)) tt0++; ///计算这个c有多少个 long long tt=tt0/c; ///有多少组 long long sum=0; ///循环节基数的和 for(int k=0;k<c;k++) { tmp[k]=(i+j*k)*j/a[i][j]; tmp[k]%=p; sum+=tmp[k]; sum%=p; } tot+=sum*tt%p; tot%=p; // long long ss=a[c*j][j]%p; long long ss=j*j/g/g; ///后者的 tot+=tt*(tt-1)/2%p*c%p*ss%p; tot%=p; for(int k=0;k<tt0-tt*c;k++) { tot+=tmp[k]; tot%=p; tot+=tt*ss%p; tot%=p; } /* cout << "i=" << i << " j=" << j << " c=" << c << " tt0=" << tt0 << " tt=" << tt << " ss=" << ss <<" sum=" << sum <<" tot=" <<tot <<endl; for(int k=0;k<c;k++) cout << tmp[k] << " "; cout << endl;*/ ans+=tot; ans%=p; } } printf("%lld\n",ans); } return 0; }
相关文章推荐
- HDU 5970 最大公约数(找规律)
- HDU-5810-Balls and Boxes-数学推导(找规律)
- HDU-5935-Car(杭州CCPC C题)-数学推导+水贪心
- HDU-5881-Tea-找规律+数学推导
- HDU-5943-Kingdom of Obsession(杭州CCPC K题)-数学推导+匈牙利算法优化
- HDU--5761-Rower Bo-数学推导(也可以找规律)
- HDU:2050 折线分割平面(规律,数学,推导)
- HDU 5826 physics (数学推导)(规律)
- hdu 5584 LCM Walk(数学推导公式,规律)
- HDU 1046 数学规律题
- [构造 数学推导] HDU 5847 Different Sums
- sgu 126 Boxes 数学推导(打表找规律??...)
- 【数学期望 && 找规律】HDU - 5984 Pocky
- HDU - 1061 Rightmost Digit (数学打表)规律
- hdu 2114 找规律的数学题目
- hdu 5389 Zero Escape DP+数学规律 给出证明 2015 Multi-University Training Contest 8
- hdu 1030 Delta-wave(数学题+找规律)
- HDU 4586 Play the Dice(规律+推导)
- 【HDU】6033 - Add More Zero(数学推导)
- URAL —— 1255 & HDU 5100——Chessboard ——————【数学规律】