1 条题解
-
0
C :
#include<stdio.h> #include<math.h> int n,m; double f(double x) { if(x==0)return 0; return (n-1)*(x-0.5)/(m-1)+0.5; } int equal(double a,double b) { return (a<b+0.000000001)&&(a>b-0.000000001); } int main() { int t,ans; int i; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); if(m==1){printf("%d\n",n);continue;} ans=0; for(i=1;i<m;i++) { if(equal(f(i),(int)f(i)))ans+=(int)f(i)-(int)f(i-1); else ans+=(int)f(i)-(int)f(i-1)+1; } ans+=(int)f(m-0.5)-(int)f(m-1)+1; printf("%d\n",ans); } return 0; }
C++ :
#include <stdio.h> int gcd(int x,int y) { return y==0?x:gcd(y,x%y); } int main() { //freopen("b.in","r",stdin); //freopen("b.out","w",stdout); int i,j,n,m,g,T; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); n--;m--;g=gcd(n,m); printf("%d\n",n+m-(n/g%2==m/g%2?g:0)+1); } return 0; }
- 1
信息
- ID
- 3363
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者