题意:一开始有一个红气球 每小时后一个红气球会变成三个红气球和一个蓝气球 第k小时 a到b行之间有几个红气球
递归找规律题目
一定要注意涉及指数的时候一定要开long long 数组!!!!
#include<bits/stdc++.h> using namespace std; long long s[35]; long long f(int k,int i) { if(i<=0)return 0; if(k==0)return 1; if( i<=pow(2,k-1) ) { return 2*f(k-1,i); } else { return 2*s[k-1]+f(k-1, i-pow(2,k-1) ); } } int main() { s[0]=1; for(int i=1;i<=30;i++) s[i]=3*s[i-1]; int n;cin>>n; for(int i=1;i<=n;i++) { int k,a,b; scanf("%d%d%d",&k,&a,&b); printf("Case %d: %lld\n",i,f(k,b)-f(k,a-1) ); } }
原文地址:https://www.cnblogs.com/bxd123/p/10434628.html
时间: 2024-10-14 10:43:56