hihoCoder #1301 : 筑地市场 (打表+构造)
题目大意:问含有4或者7的第k大的正数是多少。 题目分析:1~10、1~100、1~1000...之间的含有4或者7的个数可以求出,这样就可以从高位到地位依次确定这个数的每一位上的值。 代码如下:
# include<iostream>
# include<cstdio>
using namespace std;
# define LL long long
# define uLL unsigned long long uLL a[20]={2,36,488,5904,67232,737856,7902848,
83222784,865782272,8926258176,91410065408,
931280523264,9450244186112,95601953488896,
964815627911168,9718525023289344,
97748200186314752,981985601490518016
}; uLL b[20][10]; uLL n; void init()
{
for(int i=0;i<10;++i){
if(i==4||i==7) b[0][i]=10;
else b[0][i]=2;
}
for(int i=1;i<18;++i){
for(int j=0;j<10;++j){
if(j==4||j==7)
b[i][j]=b[i-1][j]*10;
else
b[i][j]=a[i];
}
}
} int main()
{
init();
cin>>n;
uLL ans=0;
int cnt=0;
while(n>0){
if(n<=2){
if(n==1) ans+=4;
else ans+=7;
break;
}
int k=17;
while(k>=0&&n<=a[k])
--k;
cnt=0;
while(cnt<10&&n>b[k][cnt]){
n-=b[k][cnt];
++cnt;
}
uLL res=cnt;
for(int i=0;i<=k;++i)
res*=10;
ans+=res;
if(cnt==4||cnt==7){
ans+=n-1;
break;
}
}
cout<<ans<<endl;
return 0;
}
打表代码:
# include<iostream>
# include<cstdio>
using namespace std;
# define LL long long
# define uLL unsigned long long int main()
{
uLL k=10;
uLL a=2,b=20;
int cnt=1;
while(k<=1000000000000000000)
{
cout<<(cnt++)<<' '<<a<<' '<<k<<endl;
a=a*8+b;
b*=10;
k*=10;
}
cout<<(cnt++)<<' '<<a<<' '<<k<<endl;
return 0;
}
hihoCoder #1301 : 筑地市场 (打表+构造)的更多相关文章
- hihocoder #1301 : 筑地市场 二分+数位dp
#1301 : 筑地市场 题目连接: http://hihocoder.com/problemset/problem/1301 Description 筑地市场是位于日本东京都中央区筑地的公营批发市场 ...
- hihocoder #1301 : 筑地市场 数位dp+二分
题目链接: http://hihocoder.com/problemset/problem/1301?sid=804672 题解: 二分答案,每次判断用数位dp做. #include<iostr ...
- Oracle中的表构造导出到word Sql语句
select * from ( SELECT t1.Table_Name AS "表名称", t3.comments AS "表说明", t1.Column_ ...
- hihocoder第226周:打表找规律
题目列表 问题描述 有一个文本框,可以执行以下操作: 输入A Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+A 全选 N次操作最多能够造出多少个A来? 输入一个N,输出一个整数,表示最多有多少个A ...
- PHP.45-TP框架商城应用实例-后台20-权限管理-RBAC表构造与代码生成
权限管理 三张主表{p39_privilege(权限).p39_role(角色).p39_admin(管理)} 两张中间表{p39_role_pri(角色-权限).p39_admin_role(管理- ...
- 编译原理根据项目集规范族构造LR(0)分析表
转载于https://blog.csdn.net/Johan_Joe_King/article/details/79058597?utm_medium=distribute.pc_relevant.n ...
- 数据结构算法C语言实现(三十二)--- 9.1静态查找表
一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...
- 系统spt_values表--生成时间方便left join
时间处理我给你提供一个思路 系统有个spt_values表,可以构造一整个月的日期,然后左连接你统计好的数据,用CTE表构造多次查询 spt_values的超级经典的应用 http://www. ...
- C++实现动态顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构.这样的存储方式使得线性表逻辑上相邻的元素,其在物理存储单元中也是相邻的.只要知道了第一个元素的存 ...
随机推荐
- java web 之 web.xml篇
web.xml文件 标签: 1. <web-app> 顶层标签,所有web.xml必须包含该标签.在该标签中,描述了当前Servlet版本以及其他一些信息. 2. <servlet& ...
- android 原生dialog对话框
http://www.cnblogs.com/xiaoluo501395377/p/3419398.html
- mybatis ForEach Collection集合等规范解析(转)
转自:http://blog.csdn.net/wj3319/article/details/9025349 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了fo ...
- 解决maven Generating project in Interactive mode卡死问题(转)
原文链接:http://blog.csdn.net/only_wan/article/details/52975760 mvn 创建时在generating project in interactiv ...
- Map的遍历
@Test public void test() { Map<String,String> usersmap = new HashMap<>(); usersmap.put(& ...
- 一看就会之—利用IIS服务发布网站(实践篇)上
转自:http://blog.csdn.net/zwk626542417/article/details/9796259 概述 IIS全称为互联网信息服务,是由微软公司提供的基于运行Microsoft ...
- 集合set的使用
将无序对象储存在集合中 集合是类似于数组的一组对象,只是其中包含的项目是无序的(而数组是有序的).您通过枚举集合中的对象,或者将过滤器或测试应用到集合,来随机访问集合中的对象(使用 anyObject ...
- HDOJ-三部曲-1002-Etaoin Shrdlu
ContestsProblemsRanklistStatusStatistics Etaoin Shrdlu Time Limit : 2000/1000ms (Java/Other) Memor ...
- CRM客户关系管理系统(十三)
---客户资料添加 1.事件流程:
- AmazeUI常用组件
按钮样式 <span class="am-badge">1</span> #正方形 <span class="am-badge am-ba ...