北大ACM(POJ1019-Number Sequence)
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 ;
}
北大ACM(POJ1019-Number Sequence)的更多相关文章
- POJ1019——Number Sequence(大数处理)
Number Sequence DescriptionA single positive integer i is given. Write a program to find the digit l ...
- POJ1019 Number Sequence
Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36256 Accepted: 10461 ...
- ACM—Number Sequence(HDOJ1005)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 主要内容: A number sequence is defined as follows: f ...
- 杭电ACM刷题(2):1005,Number Sequence 标签: 杭电acmC语言 2017-05-11 22:43 116人阅读
Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1 ...
- ACM学习历程——HDU 5014 Number Sequence (贪心)(2014西安网赛)
Description There is a special number sequence which has n+1 integers. For each number in sequence, ...
- 北大 ACM 分类 汇总
1.搜索 //回溯 2.DP(动态规划) 3.贪心 北大ACM题分类2009-01-27 1 4.图论 //Dijkstra.最小生成树.网络流 5.数论 //解模线性方程 6.计算几何 //凸壳.同 ...
- [2011山东ACM省赛] Sequence (动态规划)
Sequence Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Given an integer number sequence ...
- 1005 Number Sequence(HDU)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 Number Sequence Time Limit: 2000/1000 MS (Java/O ...
- HDU 1005 Number Sequence【多解,暴力打表,鸽巢原理】
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- HDU 1711 Number Sequence(KMP裸题,板子题,有坑点)
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- Android 实现形态各异的双向側滑菜单 自己定义控件来袭
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39670935.本文出自:[张鸿洋的博客] 1.概述 关于自己定义控件側滑已经写了 ...
- 异 形 卵 709 南阳oj
http://acm.nyist.net/JudgeOnline/problem.php? pid=709 异 形 卵 时间限制:1000 ms | 内存限制:65535 KB 难度: 描写叙述 ...
- Ext sqlserver C# 数据库备份还原代码,给大家参考下
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %& ...
- rk3188调试记录
1.编译 # . build/envsetup.sh # lunch 7 7. PI3910-user 1.电池部分 init.rc启动healthd-charger服务.对电池进行检測 se ...
- JPA測试实例
依赖架包 实体 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.G ...
- java 和 Android Base64加密
Java8 Base64 Java 8 新特性 在Java 8中,Base64编码已经成为Java类库的标准. Java 8 内置了 Base64 编码的编码器和解码器. Base64工具类提供了一套 ...
- finger的使用
finger命令用来查询一台主机上的登录账号的信息,通常会显示用户名.主目录.停滞时间.登录时间.登录Shell等信息,使用权限为所有用户. 安装 sudo apt-get install finge ...
- 【HDU4706】Children's Day
http://acm.hdu.edu.cn/showproblem.php?pid=4706 水题,也不知道有没有spj // <4706.cpp> - 11/03/16 14:11:21 ...
- [Codeforces 466C] Number of Ways
[题目链接] https://codeforces.com/contest/466/problem/C [算法] 维护序列前缀和 , 枚举中间一段即可 , 详见代码 时间复杂度 : O(N) [代码] ...
- 什么是javascript闭包?
在我们开发中,也经常使用到闭包,但当有人问什么是闭包,就会可能说不上来.那就谈谈一些基本的: 一.理解闭包的概念, 简单说当function里嵌套function时,内部的function可以访问外部 ...