hdoj1099 Lottery(简单的数学问题变相考察最小公倍数)
来源:互联网 发布:大数据量化平台 编辑:程序博客网 时间:2024/06/15 11:49
来源:http://acm.hdu.edu.cn/showproblem.php?pid=1099
题目很难看懂,大意是求数学期望
n*(1/1+1/2+1/3+...+1/n)
要求按照特定的格式输出
位数过大,所以采用long long型输入输出。
按照正常的分数相加的思想,想找出所有分
母的最小公倍数,再把变化后的分子相加。
代码如下:
#include<stdio.h>#define ll long longll gcd(ll a,ll b)//最大公约数 {ll c;while(b){c=a%b;a=b;b=c;}return a;}ll lcm(ll a,ll b)//最小公倍数 {return a*b/gcd(a,b);}ll getlens(ll a)//获取数的位数 {ll i=0;while(a){a=a/10;i++;}return i;}int main(){ll i,son,mother,j,n,k;ll l1,l2,l3;while(~scanf("%lld",&n)){mother=1;son=0;for(i=1;i<=n;i++)mother=lcm(mother,i);//分母值 for(i=1;i<=n;i++)son+=mother/i;son=son*n;//分子值 if(son%mother==0)printf("%d\n",son/mother);else{j=son/mother;k=son-j*mother;i=gcd(k,mother);k=k/i;mother=mother/i;l1=getlens(j);l2=getlens(k);l3=getlens(mother);for(i=0;i<l1+1;i++)printf(" ");printf("%lld\n",k);printf("%d ",j);l2=(l2>l3)?l2:l3;for(i=0;i<l2;i++)printf("-");printf("\n");for(i=0;i<l1+1;i++)printf(" ");printf("%lld\n",mother);}}return 0;}
阅读全文
0 0
- hdoj1099 Lottery(简单的数学问题变相考察最小公倍数)
- hdu1548 A strange lift 不错的变相最短路考察
- HDU 1099 Lottery (数学问题模拟)
- 洛谷 1029——最大公约数和最小公倍数问题(简单的数学问题)
- Hust oj 1632 最大的最小公倍数(简单数学)
- 简单的数学问题
- 简单的数学问题
- 【数学】 HDU 1099 Lottery
- 最短路径的变相问题
- 求最小公倍数的数学方法
- 一个简单的数学问题
- UVa10325 - The Lottery(容斥+最小公倍数)
- ACM内部函数--数学问题--最大公约数最小公倍数
- |洛谷|数学|P1029 最大公约数和最小公倍数问题
- 1893: 985的数学难题(运算方式考察)
- UVA 10382 Watering Grass(变相的最小覆盖问题)
- 变相解决调用innerHTML之后,onclick失效的问题
- 【数学基础】多个数的最小公倍数
- html嵌套规则
- 类之间相同字段值传递工具(反射机制)
- Android自定义View实现滴滴验证码输入框效果
- java经典书籍推荐
- struts2 简单数据验证
- hdoj1099 Lottery(简单的数学问题变相考察最小公倍数)
- int字长
- 《深入理解Java虚拟机》-走进Java
- 文章标题
- laravel学习笔记及记录 20170623
- 一分钟了解“Matlab实现max-median滤波”
- 六、caffe之probuff序列化消息使用
- ACM有关输出格式的总结
- 汇编-统计字符串中大写字母的个数(小于10个)