hihoCoder 1432 : JiLi Number(吉利数)

2023-10-12 20:30

本文主要是介绍hihoCoder 1432 : JiLi Number(吉利数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hihoCoder #1432 : JiLi Number(吉利数)

时间限制:1000ms
单点时限:1000ms
内存限制:256MB

Description - 题目描述

    Driver Ji likes the digit "1". He has an accumulator which shows the sum of input number. He lists all of positive number no more than N and starts counting from one, two, three...Every time he counts a number he will add the number of digit "1" in this number to accumulator at the same time. The amazing thing happens! At some times, when he finishes counting a number X, the number which on the accumulator is X exactly, he will regard X as "JiLi Number" which means lucky number. Now he wants to know the number of "JiLi Numbers" and the biggest "JiLi Number" no more than N.

Ji司机喜欢数字”1”。他有一个累加器可以显示输入数的和。他列出了所有不超过N的正整数,并且开始1,23...地数了起来。每当他数到一个数时,会顺手把其数字”1”的个数放入累加器。不可思议的事发生了!有时他数完一个数X,累加器中的数也恰好为X,他将X称作”吉利数”,表示十分幸运的数字。现在他想知道在不超过N的情况下”吉利数”的数量与最大”吉利数”。
CN

 

Input - 输入

    There are several test cases and the each test case is a line contains an positive integer N.(1<N10100)

多组数据,每组数据仅有一行,每行一个正整数N。(1<N≤10^100
CN

 

Output - 输出

    For each test case, output two integers which donates the number of "JiLi Numbers" and the biggest "JiLi Number".

对于每个测试用例,输出两个整数分别表示”吉利数”的数量与最大的”吉利数”。
CN

 

Sample Input - 样例输入

1
100000000000

 

Sample Output - 样例输出

1 1
83 1111111110

 

题解

  暴力枚举,样例刚刚好给出了最大与最小的情况……
  至于证明,证不出来,似乎因为是十进制数所以不能超过十位数,到了后面累加器中的值的增长速度明显超过了数数速度,应该是没有交集了……

 

代码 C++

  1 #include<cstdio>
  2 #include <algorithm>
  3 #define ll long long
  4 #define mx 84
  5 ll opt[mx] = {
  6     1,
  7     199981,
  8     199982, 
  9     199983,
 10     199984,
 11     199985, 
 12     199986,
 13     199987, 
 14     199988, 
 15     199989,
 16     199990,
 17     200000, 
 18     200001,
 19     1599981,
 20     1599982,
 21     1599983,
 22     1599984, 
 23     1599985,
 24     1599986,
 25     1599987,
 26     1599988,
 27     1599989,
 28     1599990,
 29     2600000, 
 30     2600001,
 31     13199998,
 32     35000000, 
 33     35000001,
 34     35199981,
 35     35199982, 
 36     35199983, 
 37     35199984,
 38     35199985, 
 39     35199986, 
 40     35199987, 
 41     35199988, 
 42     35199989,
 43     35199990,
 44     35200000, 
 45     35200001,
 46     117463825,
 47     500000000,
 48     500000001,
 49     500199981,
 50     500199982,
 51     500199983, 
 52     500199984, 
 53     500199985,
 54     500199986, 
 55     500199987, 
 56     500199988,
 57     500199989,
 58     500199990,
 59     500200000, 
 60     500200001,
 61     501599981, 
 62     501599982, 
 63     501599983, 
 64     501599984, 
 65     501599985, 
 66     501599986, 
 67     501599987, 
 68     501599988, 
 69     501599989, 
 70     501599990,
 71     502600000, 
 72     502600001,
 73     513199998,
 74     535000000, 
 75     535000001,
 76     535199981, 
 77     535199982, 
 78     535199983,
 79     535199984, 
 80     535199985, 
 81     535199986,
 82     535199987,
 83     535199988, 
 84     535199989, 
 85     535199990,
 86     535200000, 
 87     535200001,
 88     1111111110,
 89     0x7FFFFFFFFFFFFFFF
 90 };
 91 int main(){
 92     char rd[200];
 93     int i;
 94     ll tmp;
 95     while (gets(rd)){
 96         tmp = 0;
 97         for (i = 0; i < 15 && rd[i]; ++i) tmp = tmp * 10 + rd[i] - '0';
 98         i = std::upper_bound(opt, opt + mx, tmp) - opt;
 99         printf("%d %lld\n", i, opt[i - 1]);
100     }
101     return 0;
102 }


 

转载于:https://www.cnblogs.com/Simon-X/p/6077389.html

这篇关于hihoCoder 1432 : JiLi Number(吉利数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198269

相关文章

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

【Hdu】Minimum Inversion Number(逆序,线段树)

利用线段树在nlogn的时间复杂度内求一段数的逆序。 由于给的序列是由0 ~ n -1组成的,求出初始的逆序之后可以递推出移动之后的逆序数。 #include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const in

【JavaScript】基本数据类型与引用数据类型区别(及为什么String、Boolean、Number基本数据类型会有属性和方法?)

基本数据类型   JavaScript基本数据类型包括:undefined、null、number、boolean、string。基本数据类型是按值访问的,就是说我们可以操作保存在变量中的实际的值。 1)基本数据类型的值是不可变的 任何方法都无法改变一个基本类型的值,比如一个字符串: var name = "change";name.substr();//hangconsole.log

ORA-24067: exceeded maximum number of subscribers for queue ADMIN.SMS_MT_QUEUE

临时处理办法: delete from aq$_ss_MT_tab_D;delete from aq$_ss_MT_tab_g;delete from aq$_ss_MT_tab_h;delete from aq$_ss_MT_tab_i;delete from aq$_ss_MT_tab_p;delete from aq$_ss_MT_tab_s;delete from aq$

SQLSERVER排名函数RANK,DENSE_RANK,NTILE,ROW_NUMBER

SQL SERVER排名函数RANK,DENSE_RANK,NTILE,ROW_NUMBER 前言 本文意于用实例数据帮助理解SQL SERVER排名函数RANK,DENSE_RANK,NTILE,ROW_NUMBER。 准备工作 创建测试表:   ? 1 2 3 4 5 create table test( id int identity(1,1)

[LeetCode] 137. Single Number II

题:https://leetcode.com/problems/single-number-ii/ 题目大意 给定array,其中有一个元素只出现了1次,其他元素都出现了3次。 思路 求和 减去 (set(array)*3 - array)/2 作为答案。 class Solution {public int singleNumber(int[] nums) {Set<Long> se

Oracle - ORA-01789: Query block has incorrect number of result columns

一、原因     这个错误一般是在执行表之间的相加(union),相减(minus)等SQL语句时,两个个查询块具有不一致的结果列数所导致的。 二、方案     只要将两段SQL语句的列数调整为一致就可以解决。使用union时,要注意数据库字段的格式要一致,如varchar和nvarchar是不一样的。

Java Number 类和方法

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。 实例 int a = 5000;float b = 13.65;byte c = 0x4a; 然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。 所有的包装类(Integer、Lo