UVA 10183 How Many Fibs?
2013-01-15 21:31
453 查看
大意不再赘述。
思路:直接用高精度算出1~1000的fibonacci数,然后判断是否在范围内即可。
思路:直接用高精度算出1~1000的fibonacci数,然后判断是否在范围内即可。
#include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cstring> #include <string> #include <queue> using namespace std; const int MAXN = 110; struct bign { int s[MAXN], len; bign () { len = 1; memset(s, 0, sizeof(s));} bign (int num) {*this = num;} bign (const char *num) { *this = num;} bign operator = (const char *num) { len = strlen(num); for(int i = 0; i < len; i++) s[i] = num[len-i-1]-'0'; return *this; } bign operator = (int num) { char s[MAXN]; sprintf(s, "%d", num); *this = s; return *this; } bign operator + (const bign &b) { bign c; c.len = 0; for(int i = 0, g = 0; g || i < max(len, b.len); i++) { int x = g; if(i < len) x += s[i]; if(i < b.len) x += b.s[i]; c.s[c.len++] = x % 10; g = x / 10; } return c; } bool operator < (const bign &b) { if(len != b.len) return len < b.len; for(int i = len-1; i >= 0; i--) { if(s[i] != b.s[i]) return s[i] < b.s[i]; } return false; } bool operator > (const bign &b) { if(len != b.len) return len > b.len; for(int i = len-1; i >= 0; i--) { if(s[i] != b.s[i]) return s[i] > b.s[i]; } return false; } bool operator == (const bign &b) { return !(*this > b) && !(*this < b); } bool operator != (const bign &b) { return !(*this == b); } bool operator <= (const bign &b) { return *this < b || *this == b; } bool operator >= (const bign &b) { return *this > b || *this == b; } }fib[1050]; bign beg, end; istream &operator >>(istream &in, bign &x) { string s; in>>s; x = s.c_str(); return in; } void init() { fib[1] = 1; fib[2] = 2; for(int i = 3; i <= 1010; i++) fib[i] = fib[i-1]+fib[i-2]; } void solve() { int tot = 0; for(int i = 1; i <= 1010; i++) if(beg <= fib[i] && fib[i] <= end) tot++; printf("%d\n", tot); } int main() { init(); while(cin>>beg>>end) { if(beg == 0 && end == 0) break; solve(); } return 0; }
相关文章推荐
- UVa 10183 How Many Fibs? (统计斐波那契数个数&高精度)
- UVA 10183 How Many Fibs?
- uva 10183 - How Many Fibs?(斐波那契数)
- UVA10183 - How Many Fibs?(java大数+二分)
- UVA - 10183 - How Many Fibs? (斐波那契 + 高精度)
- UVa 10183 - How Many Fibs?
- UVa:10183 How Many Fibs?
- UVa 10183 - How Many Fibs?
- UVA 10183 How Many Fibs?(高精度 斐波那契)
- UVa 10183 - How Many Fibs?
- UVa10183 - How Many Fibs?
- UVA 10183 How Many Fibs?
- uva 10183 how many fibs
- UVA - 10183 How Many Fibs? —— 大数斐波那契
- UVA 10183 How Many Fibs?
- UVa Problem Solution: 10183 - How many fibs?
- UVA - 10183 How Many Fibs? (大数)
- uva 10183 How Many Fibs
- UVa 10183/EOJ 1297/POJ 2413/HDU 1316/ZOJ 1962 How many Fibs?【Java大整数类应用】
- How Many Fibs? - UVa 10183 大数加法