北大ACM(POJ1019-Number Sequence)
2024-08-30 07:55:24
Question:http://poj.org/problem?id=1019
问题点:打表。
Memory: 392K Time: 16MS
Language: C++ Result: Accepted #include <iostream>
#include <cmath>
using namespace std; #define uint unsigned int
uint table[];
uint a[] = {,,,,,};//(1-10^k)/(1-10)的对应结果
uint b[] = {,,,,,};//[1...j]中位数变动边界值。如9 10,从个位到十位时记录9的偏移量
int getLen(int n)
{
if(n<) return ;
else if(n<) return ;
else if(n<) return ;
else if(n<) return ;
else return ;
}
int main()
{
uint i=,seg;
memset(table,,sizeof(table));
for(i = ,seg = ;i<;i++)//打表
{
seg += getLen(i);
table[i] = table[i-] + seg;
}
uint eg,num,j,k,bit;
cin>>eg;
while(eg--)
{
cin>>num;
//if(num==0) break;
for(j=;j<i&&num>table[j];j++);//对应段[1...j]的最大数j
num -= table[j-];//num在[1...j]中的偏移量
for(k=;num>b[k];k++);//num所在数字有几位:如 num偏移为12,所在数字为11,长度k=2
//下面的两个公式简单说明一下:
//如 j=101:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 100 101
//当所在数字(同上面注释里的所在数字)n=19时,偏移量 offset = 19 + (19-9) ,即个位数字数 + 十位数字数
//所以,当n的长度为k时,offset = n + (n-9) +(n-99) +...+(n-(k-1个9)) =k(n+1) -(1+10+100+...+10^(k-1))=k(n+1)-(1-10^k)/(1-10)
//(1-10^k)/(1-10)已存到数组a中,则offset = k(n+1) - a[k],下面两个公式都是依此推导
bit = (num + a[k] - k - )%k;//计算num在 所在数字的位置 :如num为13指向所在数字12的十位,则bit=0(bit从数字高位到低位递增)
num = (ceil(double(num + a[k])/k-));//计算num的所在数字的值
char buf[];
sprintf_s(buf,"%d",num);
cout<<buf[bit]<<endl;//数字转字符串,输出指定位置字符
}
//system("pause");
return ;
}
最新文章
- Subsonic使用中
- 开源免费的HTML5游戏引擎
- hdu5269 Chip Factory
- datatables 前端表格插件 增删改查功能
- Java static block static constructor , static field
- WPF控件数据单项绑定
- [转] struts.xml配置详解
- C#数据类型转换的几种形式
- html5异步上传图片显示上传文件进度条
- xmpp 配置数据库 服务器
- 硬编码写RadioGroup的时候要注意设置RadioButton的Id
- 有关extern的用法
- CSDN 四川大学线下编程比赛第二题:Peter的X
- [dsu on tree]【学习笔记】
- 爬虫抓包工具Charles设置
- 使用Let&#39;s Encrypt生成免费SSL证书操作记录
- pyqt-QGrapicsView 坐标系详解
- 给tableView设置背景图片
- Linux下解压缩
- Hive复制分区表和数据
热门文章
- 用C# (.NET Core) 实现抽象工厂设计模式
- _DataStructure_C_Impl:图的遍历
- 简单区分iphone和ipad的宏定义
- Python爬虫开发【第1篇】【正则表达式】
- Razor基础,视图里如何调用controller里的函数
- DSPC6748中某问题的解决方式
- charset=&#39;utf8mb4&#39;
- 写一个简单的Makefile
- android 6.0编译时出现ERROR:Security problem ,see jack server log【转】
- NaN in JavaScript