hdu 1099
2014-12-18 16:05
281 查看
原题目地址
http://acm.hdu.edu.cn/showproblem.php?pid=1099
点击打开链接
简单地描述一下提议
输入 2
输出 2/1 + 2/2 = 6/2 = 3
输入 3
输出 3/1 + 3/2 +3/3 = 5 1/3
输入 5
输出 5/1 + 5/2 +5/3 +5/4 +5/5 = 11 5/12
其他的自己照着推一下就出来了
直接上代码了
GCC编译器
http://acm.hdu.edu.cn/showproblem.php?pid=1099
点击打开链接
简单地描述一下提议
输入 2
输出 2/1 + 2/2 = 6/2 = 3
输入 3
输出 3/1 + 3/2 +3/3 = 5 1/3
输入 5
输出 5/1 + 5/2 +5/3 +5/4 +5/5 = 11 5/12
其他的自己照着推一下就出来了
直接上代码了
GCC编译器
#include <stdio.h> /** * 求最大公约数 */ long long gcd(long long a,long long b) { if(b==0) return a; else return gcd(b,a%b); } int main() { int i,n,size1,size2; long long number,n1,n2; long long integer;//整数部分 long long fenzi;//分子 long long fenmu;//分母 long long a[23];//a 表示输入为n时,从1到n这些数的最小公倍数 a[1]=1; for(i = 2;i<= 22 ; i++) a[i]=i*a[i-1]/gcd(i,a[i-1]);//两个数的最小公倍数等于这两个数的乘机除以他们的最大公约数 while(scanf("%d",&n)!=EOF) { fenzi=0; /** * fenzi = (最小公倍数 * n)/i */ for(i=1;i<=n;i++) fenzi += a /i; fenzi *= n; number = gcd(fenzi,a ); //分子分母的最大公约数 fenzi = fenzi/number; //约分后的分子 fenmu = a /number; //约分后的分母 integer = fenzi/fenmu; //结果的整数部分 fenzi = fenzi-integer*fenmu; //最终结果的分子 if(fenzi==0) { printf("%lld\n",integer); continue; } size1=size2=0; n1=integer; n2=fenmu; //整数的位数 while(n1!=0) { size1++; n1/=10; } //分母的位数 while(n2!=0) { size2++; n2/=10; } //按题目要求的格式打印结果 for(i=0;i<=size1;i++) printf(" "); printf("%lld\n",fenzi); printf("%lld ",integer); for(i=0;i<size2;i++) printf("-"); printf("\n"); for(i=0;i<=size1;i++) printf(" "); printf("%lld\n",fenmu); } return 1; }
相关文章推荐
- hdu 1099 Lottery
- HDU1099-概率论题
- 最短路题目整理 Hdu 2066 + 1839 + LightOJ 1099(次短路)
- hdu 1099 Lottery
- HDU 1099 数学计算
- HDU—— 1099 Lottery
- hdu1099 lottery 假分式 字符串函数 strncpy sprintf 函数 数字输入字符数组 公约数
- hdu 1099 Lottery 解题分析
- hdu 1099(数学)
- HDU1099————Lottery HDU(86)
- hdu 1000-1099计划(31)
- hdu 1099 数学
- hdu 1099 不可摸数
- hdu 1099 Lottery
- HDU 1099 Lottery (数学问题模拟)
- hdu 1000-1099计划(31)
- HDU 1099 Lottery
- hdu 1099 lottery
- hdu 1099 Lottery
- 【最短路Dijkstra算法】hdu 2851