hdu 1250 Hat's Fibonacci(高精度加法+缩进+斐波那契数)
2013-08-20 15:45
330 查看
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1250
题目大意:求一个斐波那契数列的第n 项, n的上限是10000.
解题思路:因为本题的上限是10000,所以对于高精度要进行缩进。
题目大意:求一个斐波那契数列的第n 项, n的上限是10000.
解题思路:因为本题的上限是10000,所以对于高精度要进行缩进。
#include <iostream> #include <string.h> using namespace std; const int MAXN = 100000000; const int N = 500; const int M = 10000; struct bign { int len; int s ; bign() { this -> len = 1; memset(s, 0, sizeof(s)); } bign (int number) {*this = number;} bign (const char* number) {*this = number;} bign change(bign cur) { bign now; now = cur; for (int i = 0; i < cur.len; i++) now.s[i] = cur.s[cur.len - i - 1]; return now; } void delZore() { // 删除前导0. bign now = change(*this); while (now.s[now.len - 1] == 0 && now.len > 1) { now.len--; } *this = change(now); } void put() { // 输出数值。 delZore(); printf("%d", s[0]); for (int i = 1; i < len; i++) printf("%08d", s[i]); } bign operator = (const char *number) { memset(s, 0, sizeof(s)); int dist = strlen(number); int k = dist % 8; for (int i = 0; i < k; i++) s[0] = s[0] * 10 + number[i] - '0'; int cnt = 0; for (int i = k; i < dist; i++, cnt++) s[cnt / 8 + 1] = s[cnt / 8 + 1] * 10 + number[i] - '0'; len = cnt / 8 + 1; return *this; } bign operator = (int number) { char string ; sprintf(string, "%d", number); *this = string; return *this; } bign operator + (const bign &cur){ bign sum, a, b; sum.len = 0; a = a.change(*this); b = b.change(cur); for (int i = 0, g = 0; g || i < a.len || i < b.len; i++){ int x = g; if (i < a.len) x += a.s[i]; if (i < b.len) x += b.s[i]; sum.s[sum.len++] = x % MAXN; g = x / MAXN; } return sum.change(sum); } }; bign num[M + 10]; int main() { int n; num[1] = num[2] = num[3] = num[4] = 1; for (int i = 5; i < M + 5; i++) num[i] = num[i - 1] + num[i - 2] + num[i - 3] + num[i - 4]; while (scanf("%d", &n) == 1) { num .put(); printf("\n"); } return 0; }
相关文章推荐
- HDU1250~Hat's Fibonacci(大数加法)
- hdu 1250 Hat's Fibonacci (大数相加,水题)
- HDU1250 Hat's Fibonacci 【亿进制】
- HDU 1250-Hat's Fibonacci(大数)
- HDU 1250 Hat's Fibonacci (+=)
- hdu 1250 Hat's Fibonacci
- HDU1250 Hat's Fibonacci 【大数】
- HDOJ/HDU 1250 Hat's Fibonacci(大数~斐波拉契)
- HDU 1250 Hat's Fibonacci 大数加法 进位10000000
- hdu1250 Hat's Fibonacci
- HDU 1250 Hat's Fibonacci()
- [大数] HDU 1250 - Hat's Fibonacci
- Hat's Fibonacci-hdu-1250
- HDU1250_Hat's Fibonacci【高精度】【水题】
- HDU 1250 Hat's Fibonacci (JAVA大数)
- hdu 1250 Hat's Fibonacci
- HDU 1250 Hat's Fibonacci(高精度加法)
- hdu 1250 Hat's Fibonacci
- HDU 1250-Hat's Fibonacci
- HDU 1250 Hat's Fibonacci