这道题不会!求速解!c++算法题~..
答案:2 悬赏:80 手机版
解决时间 2021-02-12 22:29
- 提问者网友:风月客
- 2021-02-12 05:54
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是:3^0,3^1,3^0+3^1,3^2,3^0+3^2,3^1+3^2, 3^0+3^1+3^2,…) 请你求出这个序列的第N项的值(用10进制数表示)。 例如,对于k=3,N=100,正确答案应该是981。 输入格式 输入只有1行,为2个正整数,用一个空格隔开: k N (k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)。 输出格式 输出为计算结果,是一个正整数(在所有的测试数据中,结果均不超过2.1*10^9)。(整数前不要有空格和其他符号)。
最佳答案
- 五星知识达人网友:玩家
- 2021-02-12 07:08
有了LongDa的回答,这道题就非常简单了: void main(){ long K,N,k,n,i,s=0; printf("input K,N(3≤K≤15,10≤N≤1000):"); scanf("%d %d",&K,&N); for(i=0,n=N,k=1;n;n>>=1,k*=K,i++) if(n&1)s+=k; printf("\ns=%d",s); }
全部回答
- 1楼网友:封刀令
- 2021-02-12 07:44
就是把n表示为二进制,然后把对应的位数上是1的幂加起来
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯