题目描述:
给出一个N,计算[0-N-1]中有多少个符合 i+i+1+i+2不产生进位的数字
题目分析:
个位只能是 0 1 2
其他位置只能是 0 1 2 3
然后上乘法原理和加法原理统计就好了
题目链接:
代码:
**在这里插入代码片**#include <iostream>
#include <cstdio>
#include <cstring>
#define int long long
char s[15];
inline int ksm(int x,int y)
{
int ans=1;
while(y)
{
if(y%2) ans*=x;
x*=x;
y/=2;
}
return ans;
}
inline int work()
{
int ans=0;
int len=strlen(s);
for(int i=0;i<len;i++)
{
int tmp=s[i]-'0';
if((i==len-1))
{
if(tmp<=2) ans+=tmp;
else ans+=3;
}
else
{
if(tmp<=3) ans+=ksm(4,len-2-i)*3*tmp;
else {ans+=ksm(4,len-1-i)*3;break;};
}
}
return ans;
}
signed main()
{
while(scanf("%s",s)!=EOF) printf("%lld\n",work());
return 0;
}