Uva 12627 Erratic Expansion——递推
注意用long long
#include using namespace std;long long c[50];long long dfs(int k, int i) { if (i == 0) return 0; if (k == 0) return 1; int kk = 1 << (k - 1); if (kk > i) return dfs(k - 1, i) * 2; else return dfs(k - 1, i - kk) + c[k - 1] * 2;}int main(){ c[0] = 1; for (int i = 1; i <= 31; i++) { c[i] = c[i - 1] * 3; } int T, k, A, B, flag = 0; scanf("%d", &T); while (T--) { scanf("%d %d %d", &k, &A, &B); printf("Case %d: %lld\n", ++flag, dfs(k, B) - dfs(k, A - 1)); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~