• L1-033 出生年


    以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

    输入格式:

    输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

    输出格式:

    根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

    输入样例1:

    1988 4
    

    输出样例1:

    25 2013
    

    输入样例2:

    1 2
    

    输出样例2:

    0 0001
    
     
    思路:将年份用sprintf控制格式为%04d转化成字符串,再用个函数计算有几个数字不同,遍历找出符合条件的年份......
     
     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 int jisuan(char str[]);
     5 int main()
     6 {
     7     char str[5];
     8     int year,n;
     9     int count=0;
    10     cin>>year>>n;
    11     sprintf(str,"%04d",year);
    12     int n1=jisuan(str);
    13     if(n1==n)
    14     {
    15         cout<<count<<" "<<str<<endl;
    16         return 0;
    17     }
    18     while(n1!=n)
    19     {
    20         year++;
    21         count++;
    22         sprintf(str,"%04d",year);
    23         n1=jisuan(str);
    24     }
    25         cout<<count<<" "<<str<<endl;
    26     return 0;
    27 }
    28 int jisuan(char str[])
    29 {
    30     int num[10];
    31     memset(num,0,sizeof(num));
    32     for(int i=0;i<strlen(str);i++)
    33     {
    34         num[str[i]-'0']++;
    35     }
    36     int count=0;
    37     for(int i=0;i<10;i++)
    38     if(num[i])
    39     count++;
    40     return count;
    41 }
    大佬见笑,,
  • 相关阅读:
    判断python字典中key是否存在的两种方法
    @SuppressWarnings("unused")注解的作用
    jsp常见的指令总结
    我们怎么获取数据库中的值或者在数据库中添加值那???
    sql语句中的问号是干什么的???
    第四天:servlet的生命周期和一些细节问题
    第三天:Servlet运行原理
    第二天:tomcat体系结构和第一个Servlet
    第一天:tomcat相关知识和浏览器的访问机制
    在用mvn编译java文件时遇到问题
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10305441.html
Copyright © 2020-2023  润新知