Description
[n≥3] ,定义使A3*A4*…*Ak为整数的k [k≥3]叫做兑数。求取区间[3,x]内所有兑数的和加上4是多少。
Input
输入包含多组数据,每一行是一个数x,x<=2^31。
Output
每组测试数据输出对应的一行答案,每组数据间有两个空行。具体输出格式见样例。
Sample Input
5 10
Sample Output
Case # 1: 8 -ti - hen- shui - Case # 2: 16 -ti - hen- shui -
Source
Unknown
一个踩坑里的小朋友:为什么这个换行这么多?!
#include<iostream>
#include<math.h>
using namespace std;
#define ll long long
int i=0,k=0;
ll x,ans;
ll q_pow(ll a, ll b)
{
ll ans = 1;
while(b > 0)
{
if(b & 1)
ans = ans * a ;
a = a * a ;
b >>= 1;
}
return ans;
}
int main()
{
while(cin>>x)
{
ans=4;
for(i=2;q_pow(2,i)<=x;i++)
{
ans=ans+pow(2,i);
}
k++;
cout<<"Case # "<<k<<": "<<ans<<" -ti - hen- shui -"<<endl<<'\n'<<'\n';
}
return 0;
}