zoukankan      html  css  js  c++  java
  • L1-1. 出生年【STL放的位置】

    L1-1. 出生年

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

    以上是新浪微博中一奇葩贴:“我出生于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
    

    【分析】:要是set没有clear或者没把set定义在每次循环内部就会出错,这个错误还蛮困扰并且隐蔽的,不过也怪我使用STL的时候没有仔细分析哪里应该clear的习惯,真的细节决定成败,题目不难,用set去重计数,当size和n吻合即可。

    【代码】:

    #include <bits/stdc++.h>
    
    using namespace std;
    int main()
    {
        int x,y,n,ans;
        cin>>y>>n;
        set<int> s;
        for(int i=y; ;i++){
            s.clear();//要么clear要么直接把set定义在这里!
            int x=i;
            while(x){
              s.insert(x%10);
              x/=10;
          }
          if(s.size()==n){
              ans=i;
              break;
          }
        }
        printf("%d %04d
    ",ans-y,ans);
    }
  • 相关阅读:
    JS实现倒计时
    jQuery图片展示插件Galleria
    几个常用的方法
    整理了一个多数据库通用操作类
    Oracle 伪列、取前几条记录、日期判断等
    第十九章 10头节点类,中间节点类和尾节点类 简单
    第十八章 38总结 简单
    第十九章 代码重用 6按别名传递book对像 简单
    第十九章 代码重用 3类书类 简单
    第十九章 代码重用 4为图书重载GetAuthor函数 简单
  • 原文地址:https://www.cnblogs.com/Roni-i/p/8665416.html
Copyright © 2011-2022 走看看