sicily 1344. 数列
2015-11-12 21:49
267 查看
1344. 数列
Constraints
Time Limit: 1 secs, Memory Limit: 32 MBDescription
给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是:1,3,4,9,10,12,13,…
(该序列实际上就是:30,31,30+31,32,30+32,31+32,30+31+32,…)
请你求出这个序列的第N项的值(用10进制数表示)。
例如,对于k=3,N=100,正确答案应该是981。
Input
输入包含多个测试数据。每个测试数据只有1行,为2个正整数,用一个空格隔开:
k N
(k、N的含义与上述的问题描述一致,且3≤k≤15,10≤N≤1000)
Output
对于每个测试数据输出一个正整数(在所有的测试数据中,结果均不超过2.1*109)。Sample Input
3 1003 100
Sample Output
981981
题目分析
某种规则的数列生成,考察进制转换
1(10)=1(2) a1 = 1*3^0 = 1
2(10)=10(2) a2 = 1*3^1 + 0*3^0 = 3
3(10)=11(2) a3 = 1*3^1 + 1*3^0 = 4
4(10)=100(2) a4 = 1*3^2 + 0*3^1 + 0*3^0 = 9
5(10)=101(2) a5 = 1*3^2 + 0*3^1 + 1*3^0 = 10
6(10)=110(2) a6 = 1*3^2 + 1*3^1 + 0*3^0 = 12
7(10)=111(2) a7 = 1*3^2 + 1*3^1 + 1*3^0 = 13
#include <stdio.h>
#include <math.h>
int main()
{
int scale, num;
while (EOF != scanf("%d%d", &scale, &num)) {
int ans = 0;
int weight = 1;
while (num != 0) {
ans += (num%2)*weight;
weight *= scale;
num /= 2;
}
printf("%d\n", ans);
}
}
相关文章推荐
- OpenCV中保存视频的一般方法
- OpenCV中保存视频的一般方法
- ubuntu 解决 “E: Problem wih MergeList /var/lib/apt/lists/”错误
- Caffe编译出问题:This tool requires OpenCV; compile with USE_OPENCV.
- android高级控件ListView
- 几种无缝切换的实现方法
- js执行上下文
- 营业执照号码生成规则
- svmpredict输出为空
- Objective-c 字符串处理
- VS2010实现自动添加版权信息
- 分页存储过程收集(非本人原创)
- hdu 4681 String(LIS+暴力)
- Android卡片新闻页优化实践
- 浏览器 HTTP 缓存原理分析
- scss 的使用
- 没有躲过的坑--获取一张图片的width和height
- 没有躲过的坑--获取一张图片的width和height
- Git忽略文件及文件夹
- [02](面向对象的)思想