zoukankan      html  css  js  c++  java
  • [codeVS3943] 数学奇才琪露诺

    题目描述 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

    思路

    很显然我们不可能直接对每个数进行验证;

    但是,数位和的话,似乎只有0~72这些极少的情况;

    于是,我们就可以根据数位,先打个表。。。然后问题解决了。

    代码实现

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 int k,p,q,l,r,ans;
     5 int s[100];
     6 long long a,b,c;
     7 int main(){
     8     scanf("%d%d%d",&k,&p,&q);
     9     scanf("%d%d",&l,&r);
    10     for(int i=0;i<=72;i++){
    11         a=1,b=0;
    12         for(int j=1;j<=k;j++) a*=i;
    13         a*=p,a+=q,c=a;
    14         while(a) b+=a%10,a/=10;
    15         if(b==i&&l<=c&&c<=r) s[ans++]=c;
    16     }
    17     printf("%d
    ",ans);
    18     for(int i=0;i<ans;i++) printf("%d ",s[i]);
    19     putchar('
    ');
    20     return 0;
    21 }
  • 相关阅读:
    最近面试有感,不要耍小聪明,面试官都是开了上帝视角的
    Mac OS X上编写 ASP.NET vNext 系列中断和再开声明
    Mac OS X 上编写 ASP.NET vNext (二) IDE配置
    Mac OS X上编写 ASP.NET vNext(一)KRE环境搭建
    Redhat Linux /etc/profile 与 /etc/bashrc 的区别
    IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别
    Linux 学习笔记(一) 入门
    SQL Server 常用分页SQL
    winform 如何控制输入法
    winform 记录全局异常捕获
  • 原文地址:https://www.cnblogs.com/J-william/p/7200509.html
Copyright © 2011-2022 走看看