当前位置: 首页 > news >正文

POJ-1019 Number Sequence(思维题)

题意:

有一个序列:11212312341234512345612345671234567812345678912345678910...

给定一个数n,求序列的第n个数的值。

思路:

以每一个递增序列为一段进行预处理,num[i]存储该段内数字的个数,然后求一个前缀和,输入n后找到第一个>=n的前缀和位置k,然后暴力从1搜到k寻找答案。


代码:

#include <algorithm>
#include <cstdio>
#define LL long long
using namespace std;
const int maxn = 50005;
const LL UP = 2.2e9;
LL num[maxn], sum[maxn];
int cnt, wei[15];
inline void init()
{
	LL up = 0, pre = 0, x = 0, cut = 0; cnt = 0;
	int flag = 0;
	for(int k = 1; k <= 9; ++k)
	{
		cut = x;
		x = x*10+9;
		LL xx = x-cut;
		for(int i = 1; i <= xx; ++i)
		{
			up += pre+i*k;
			num[++cnt] = pre+i*k;
			if(up >= UP){flag = 1; break;}
		}
		if(flag) break;
		pre += (x-x/10)*k;
	}
	sum[0] = 0; sum[1] = num[1];
	for(int i = 1; i <= cnt; ++i) sum[i] = sum[i-1]+num[i];
}
int main()
{
	init();
	int t, n, k, flag;
	scanf("%d", &t);
	while(t--)
	{
		scanf("%d", &n);
		for(k = 1; k <= cnt; ++k)
		if(n <= sum[k]) break;
		n -= sum[k-1]; flag = 0;
		for(int i = 1; i <= k; ++i)
		{
			int t = i, j = 0;
			while(t)
			{
				wei[++j] = t%10;
				t /= 10;
			}
			for(int l = j; l >= 1; --l)
			{
				--n;
				if(n == 0)
				{
					flag = 1;
					printf("%d\n", wei[l]);
					break;
				}
			}
			if(flag) break;
		}
	}
	return 0;
}

继续加油~

相关文章:

  • 【吾日三省吾身】2015.6.13-涅槃行动第二十六天
  • Codeforces Round #427 (Div. 2)-C. Star sky(二维前缀和)
  • sequioadb源码分析2
  • HDU-6058 Kanade's sum - 2017 Multi-University Training Contest - Team 3(思维+模拟链表)
  • PowerShell获取特定“描述”的虚拟机IP地址
  • HDU-6060 RXD and dividing - 2017 Multi-University Training Contest - Team 3(思维+最小斯坦纳树)
  • error while loading shared libraries错误处理
  • POJ-3270 Cow Sorting(贪心+置换)
  • php对gzip文件或者字符串解压实例参考
  • POJ-1637 Sightseeing tour(通过网络流判定混合图的欧拉回路)
  • 哈密顿图和欧拉图知识小结
  • POJ-2689 Prime Distance(区间素数筛--经典题)
  • c语言移位操作
  • HDU-6069 Counting Divisors - 2017 Multi-University Training Contest - Team 4(分解质因子区间筛法)
  • HDU-6073 Matching In Multiplication - 2017 Multi-University Training Contest - Team 4(拓扑+连通块处理)
  • 时间复杂度分析经典问题——最大子序列和
  • 【技术性】Search知识
  • ComponentOne 2017 V2版本正式发布
  • HashMap剖析之内部结构
  • Hibernate最全面试题
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS 面试题总结
  • pdf文件如何在线转换为jpg图片
  • PHP CLI应用的调试原理
  • React as a UI Runtime(五、列表)
  • SpingCloudBus整合RabbitMQ
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 半理解系列--Promise的进化史
  • 从零搭建Koa2 Server
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 浮现式设计
  • 复杂数据处理
  • 诡异!React stopPropagation失灵
  • 基于游标的分页接口实现
  • 如何学习JavaEE,项目又该如何做?
  • 使用API自动生成工具优化前端工作流
  • 一天一个设计模式之JS实现——适配器模式
  • 由插件封装引出的一丢丢思考
  • 如何正确理解,内页权重高于首页?
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​【已解决】npm install​卡主不动的情况
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (六)Hibernate的二级缓存
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (南京观海微电子)——COF介绍
  • (十一)图像的罗伯特梯度锐化
  • (一)RocketMQ初步认识
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (正则)提取页面里的img标签
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)