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 ;
}

最新文章

  1. Subsonic使用中
  2. 开源免费的HTML5游戏引擎
  3. hdu5269 Chip Factory
  4. datatables 前端表格插件 增删改查功能
  5. Java static block static constructor , static field
  6. WPF控件数据单项绑定
  7. [转] struts.xml配置详解
  8. C#数据类型转换的几种形式
  9. html5异步上传图片显示上传文件进度条
  10. xmpp 配置数据库 服务器
  11. 硬编码写RadioGroup的时候要注意设置RadioButton的Id
  12. 有关extern的用法
  13. CSDN 四川大学线下编程比赛第二题:Peter的X
  14. [dsu on tree]【学习笔记】
  15. 爬虫抓包工具Charles设置
  16. 使用Let&#39;s Encrypt生成免费SSL证书操作记录
  17. pyqt-QGrapicsView 坐标系详解
  18. 给tableView设置背景图片
  19. Linux下解压缩
  20. Hive复制分区表和数据

热门文章

  1. 用C# (.NET Core) 实现抽象工厂设计模式
  2. _DataStructure_C_Impl:图的遍历
  3. 简单区分iphone和ipad的宏定义
  4. Python爬虫开发【第1篇】【正则表达式】
  5. Razor基础,视图里如何调用controller里的函数
  6. DSPC6748中某问题的解决方式
  7. charset=&#39;utf8mb4&#39;
  8. 写一个简单的Makefile
  9. android 6.0编译时出现ERROR:Security problem ,see jack server log【转】
  10. NaN in JavaScript