洛谷p1062 找规律

看题解都是进制转换,本弱弱一开始没想到,但是搞出了点规律,一样可以过。上图

规律就是第 2^n 个数字就是数字 k^n; 然后在第 2^n 到 2^n +1之间的数字,就是第 2^n 的数加上第一个数,第二个数,知道第2^n-1个数。然后我们只要把这个过程模拟出来就可以啦,代码也很短


#include<stdio.h>
#include<iostream>
#include<cmath>
using namespace std;
const long long max_ = 300000+7;
long long ans[max_];
int main() {
	long long k, n;
	cin >> k >> n;
	ans[1] = 1; ans[2] = k;
	int cishu = 1;
	int now = 3;
	for (int i = 1; i <= 50; i++) {
		int t = pow(2, i);
		ans[t] = pow(k, i);
		int j = 1;
		for (; now < pow(2, i+1); now++,j++) {
		
			ans[now] = ans[t] + ans[j];
			if (now >= n) {
				cout << ans[n];
				return 0;
			}
		}
		now++;
	}
	return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:13
点赞 评论 收藏
分享
07-19 13:28
长沙学院 Java
程序员小白条:你有面试就有希望,没面试自然就没希望,到时候就知道了,你问别人也没啥用处的
点赞 评论 收藏
分享
给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务