本文主要是介绍【数学】 HDU 1099 Lottery,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
HDU 1099 Lottery
题意没懂, 看了discuss,有人说的,才懂了。。。
#include <stdio.h>
#include <iostream>
#include <string>
#include <cstring>
using namespace std;__int64 gcd(__int64 a, __int64 b)
{if(b == 0) return a;return gcd(b, a % b);
}__int64 getlen(__int64 x)
{__int64 cnt = 0;while(x){cnt++;x /= 10;}return cnt;
}int main()
{__int64 n;while(scanf("%I64d", &n) != EOF){__int64 fm = 1, fz = n, temp;for(__int64 i = 2; i <= n; i++){fm *= i;fz = fz * i + fm * n / i;temp = gcd(fz, fm);fz /= temp;fm /= temp;}__int64 a = fz / fm;if(fz % fm == 0){printf("%I64d\n", a);continue;}fz = fz - fm * a;__int64 len_fm = getlen(fm);__int64 len_fz = getlen(fz);__int64 len_a = getlen(a);__int64 maxx = max(len_fm, len_fz);for(__int64 i = 0; i < len_a + 1; i++)putchar(' ');printf("%I64d\n", fz);printf("%I64d ", a);for(__int64 i = 0; i < maxx; i++)putchar('-');puts("");for(__int64 i = 0; i < len_a + 1; i++)putchar(' ');printf("%I64d\n", fm);}return 0;
}
这篇关于【数学】 HDU 1099 Lottery的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!