uva 11645 - Bits(计数问题+高精度)
2014-05-20 23:03
330 查看
题目链接:uva
11645 - Bits
题目大意:给出n,问从0到n这n+1个数种,数的二进制情况下,有多少11存在。解题思路:和uva 11038一个类型的题目,只是这道题目是对于二进制下的情况。而且高精度部分可以用两个long long数解决。
#include <cstdio> #include <cstring> typedef long long ll; const int N = 100; const ll M = 1e13; ll bit (int k) { return (ll)1<<k; } void add (ll& p, ll& q, ll a, ll b) { if (a <= 0 || b <= 0) return; q += a * b; p += q/M; q %= M; } void solve (ll n) { int j = 0; ll left = n/2, right = 0; ll p = 0, q = 0; while (left) { left /= 2; add(p, q, left, bit(j)); if ((n&bit(j)) && (n&bit(j+1))) add(p, q, 1, right+1); if (n&bit(j)) right |= bit(j); j++; } if (p) { printf("%lld", p); printf("%013lld\n", q); } else { printf("%lld\n", q); } } int main () { ll n; int cas = 1; while (scanf("%lld", &n) == 1 && n >= 0) { printf("Case %d: ", cas++); solve(n); } return 0; }
相关文章推荐
- UVA 11645 - Bits(数论+计数问题)
- UVa11645 - Bits(递推+高精度)
- UVa 11645 Bits(计数原理+高精度)
- uva 10328 - Coin Toss(计数问题)
- UVA 11538 - Chess Queen(数论+计数问题)
- UVA 1436 - Counting heaps(计数问题)
- UVA10294项链和手镯(等价类计数问题)
- uva 11645 Bits
- uva 11529 - Strange Tax Calculation(计数问题)
- uva11645 - Bits 统计 巧妙的大数
- UVA 12508 - Triangles in the Grid(计数问题)
- uva11645 Bits(数位统计)
- UVA 11401 - Triangle Counting(数论+计数问题)
- UVA 11038 - How Many O's?(计数问题)
- UVA 10253 - Series-Parallel Networks(数论+计数问题+递推)
- UVA 11123 - Counting Trapizoid(计数问题+容斥)
- Uva 11645 - Bits 解题报告(递推+大数)
- UVA 1073 - Glenbow Museum(数论+计数问题+递推)
- UVA 11529 - Strange Tax Calculation(计数问题)
- uva 11139 格点计数问题