zhangge 2017-02-11 19:44:00
点我顶贴
收藏
删除
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void estimate(long long int k,long long int num,long long int add)
{
//estimate
long long int count=0;
long long int mid=1;
long long int count1=0;
long long int mid2=1;
for(count=0;mid<num;count++,mid=mid*2)
{
//printf("%d\n",mid);
}
if(mid==num)
{
for(count1=0;count1<count;count1++)
{
mid2=mid2*k;
}
printf("%lld",mid2+add);
}
else
{
for(count1=0;count1<count;count1++)
{
mid2=mid2*k;
}
estimate(k,num-mid/2,add+mid2/k);
}
}
int main()
{
int k, num;
scanf("%d%d",&k,&num);
//input
estimate(k,num,0);
return 0;
}
#1 quanyh15@2017-02-23 04:10:09
33963
回复
删除
这题的答案好像有点问题,答案都是在int范围内的,实际上会有溢出,然后除以int的最大值取余数,才得到平台给的答案。