zoukankan      html  css  js  c++  java
  • CODEVS 3943 数学奇才琪露诺

    【题目描述 Description】

    作为上白泽慧音老师的出色弟子,数学奇才琪露诺在算术方面有很深的造诣。今天,codevs有幸请到了这位数学界的奇葩作为本场考试的第一题主考官。

    琪露诺喜欢0-9之间的数字,她喜欢将十进制非负数字的每一位一一识别出来,再将它们用计算器加起来,也即数字的数位之和,例如,对于1234,琪露诺会用计算器算出1+2+3+4=10。

    琪露诺不仅会使用计算器的加法,还会使用计算器的减法、乘法和求幂操作,她觉得一个数x对她来说是有趣的,当且仅当她将x的数位之和算出来后,进行求k次幂的操作,再乘p,再加上或减去|q|得到的数恰好还是x

    琪露诺是非常好奇,在一段区间[l,r]以内的所有整数x里,有多少个x对她来说是有趣的,她希望你能帮她解决这个问题。

    输入描述 Input Description

        第一行三个整数k,p和q,表示求k次幂,乘以p,如果q为正则加上|q|,如果非正则减去|q|。

    第二行两个非负整数l和r,表示所求的区间,保证l≤r。

    输出描述 Output Description

    第一行一个非负整数n,表示有多少个有趣的x。

    如果为n正,则第二行升序输出n个非负整数,表示这n个有趣的数字,数字之间用一个空格隔开,行末可以有多余空格。

    样例输入 Sample Input

    2 2 -1

    1 999

    样例输出 Sample Output

    4

    1 31 337 967

    数据范围及提示 Data Size & Hint

    对于100%的数据,有1≤k≤5,0≤p,|q|≤10000,0≤l≤r≤109。

    【解题思路】

    这是CODEVS月赛的第一题,很多人抱怨输入数据给错了,最大到10^10,但我并没有受到影响,因为这个题目本来就不是暴力枚举来做的,很显然,最大数为999999999,此时所有位数相加为81,也就是说没有一个数的各位加和比81大,那么我们只需要枚举这81个数经过处理之后的数值,并判断数值是否在范围内就可以了。

     1 program shuxue;
     2 var k,p,q,l,r,i,j,sum,n:Longint;
     3     a,b:array[1..100] of int64;
     4     c:int64;
     5 begin
     6     read(k,p,q);
     7     read(l,r);
     8     for i:=1 to 81 do a[i]:=i;
     9     for i:=1 to 81 do
    10     begin
    11         for j:=1 to k-1 do
    12         a[i]:=a[i]*i;
    13         a[i]:=a[i]*p;
    14         a[i]:=a[i]+q;
    15     end;
    16     for i:=1 to 81 do
    17     begin
    18         sum:=0;
    19         if (a[i]>=l) and(a[i]<=r) then
    20         begin
    21             c:=a[i];
    22             while a[i]>0 do
    23             begin
    24                 sum:=a[i] mod 10+sum;
    25                 a[i]:=a[i] div 10;
    26             end;
    27             if sum=i then
    28             begin
    29                 inc(n);
    30                 b[n]:=c;
    31             end;
    32         end;
    33     end;
    34     writeln(n);
    35     for i:=1 to n do write(b[i],' ');
    36 end.
    37 
  • 相关阅读:
    Eclipse常用快捷键
    java中构造方法及其作用
    jsp的验证码实现
    request.getParameter()与request.setAttribute()的区别 (转载)
    HTML表单操作的记录
    Java Collection(转载)
    Java中StringBuffer类append方法的使用
    java中string.trim()函数的使用
    doGet与doPost的区别
    celery
  • 原文地址:https://www.cnblogs.com/wuminyan/p/4746754.html
Copyright © 2011-2022 走看看