题意:
给你一个n,求在i<n的所有情况中,计算i+(i+1)+(i+2)不产生任何进位的i的情况数。。
些一个暴力程序,可以发现规律
个位不产生进位0,1,2
中间不产生进位0,1,2,3
最高不产生进位1,2,3
#include"stdio.h"
#include"string.h"
#define N 11
typedef __int64 LL;
LL a[N],b[N];
void init()
{
a[1]=1;
a[2]=3;
a[3]=a[2]*4;
a[4]=a[3]*4;
a[5]=a[4]*4;
a[6]=a[5]*4;
a[7]=a[6]*4;
a[8]=a[7]*4;
a[9]=a[8]*4;
a[10]=a[9]*4;
}
int main()
{
LL n;
init();
while(scanf("%I64d",&n)!=-1)
{
LL i=n;
LL t=1;
while(n)
{
b[t++]=n%10;
n/=10;
}
LL ans=0;
for(i=t-1;i>=1;i--)
{
if(i!=1)
{
if(b[i]<=3)ans+=b[i]*a[i];
else
{
ans+=4*a[i];break;
}
}
else
{
if(b[i]<=2)ans+=b[i];
else ans+=3;
}
}
printf("%I64d\n",ans);
}
return 0;
}