JD8. 进制均值
描述
输入描述
输入中有多组测试数据,每组测试数据为一个整数A输出描述
对每组测试数据,在单独的行中以X/Y的形式输出结果。示例1
输入:
5 3
输出:
7/3 2/1
C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2021-12-11
#include <stdio.h> #include <assert.h> int gcd(int a, int b) { int remainder = a%b; return remainder ? gcd(b, remainder) : b; } int main(void) { int n; while(scanf("%d", &n) != EOF) { assert(n > 1); assert(n <= 5000); int res = 0; for(int i=2; i<n; ++i){ int num = n; while(num) { res += num%i; num /= i; } } int k = gcd(res, n-2); printf("%d/%d\n", res/k, (n - 2)/k); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 352KB, 提交时间: 2020-12-29
#include<stdio.h> int main(void) { int A,i,A0; int sum; int count,X,Y; while(scanf("%d",&A)!=EOF) { A0=A; count=A0-2; sum=0; for(i=2;i<A0;i++) { A=A0; while(A!=0) { sum+=(A%i); A/=i; } } for(i=count/2;i>=2;i--) { if((sum%i==0)&&(count%i==0)) { sum/=i; count/=i; } } X=sum; Y=count; printf("%d/%d\n",X,Y); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 352KB, 提交时间: 2018-12-14
#include <stdio.h> int main(){ int A; int sum,gcd; int i; int num; int m,n,r; while(scanf("%d",&A)!=EOF){ sum=0; for(i=2;i<=A-1;i++){ num=A; while(num>0){ sum=sum+num%i; num=num/i; } } m=sum; n=A-2; while(n){ r=m%n; m=n; n=r; } gcd=m; printf("%d/%d\n",sum/gcd,(A-2)/gcd); } }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2018-12-11
#include <stdio.h> int main(){ int A; int sum,gcd; int i; int num; int m,n,r; while(scanf("%d",&A)!=EOF){ sum=0; for(i=2;i<=A-1;i++){ num=A; while(num>0){ sum=sum+num%i; num=num/i; } // printf("%d\n",sum); } m=sum; n=A-2; while(n){ r=m%n; m=n; n=r; } gcd=m; // printf("%d",sum); // printf("%d",m); printf("%d/%d\n",sum/gcd,(A-2)/gcd); } }
C 解法, 执行用时: 2ms, 内存消耗: 384KB, 提交时间: 2019-08-19
#include <stdio.h> int n,sum; int gcd(int a,int b); int main() { int i,t; while(scanf("%d",&n)!=EOF) { sum = 0; for(i=2;i^n;i++) for(t=n;t;t/=i) sum += t % i; n -= 2; t = gcd(sum,n); printf("%d/%d\n",sum/t,n/t); } return 0; } int gcd(int a,int b) { return b?gcd(b,a%b):a; }