zoukankan      html  css  js  c++  java
  • 小 X 与数字(ten)

    题目:

    时间限制 : 1 Sec
    内存限制 : 64 Mb
    提交 : 316
    解决 : 220

    题目描述

    自从小 X 研究出了 BetaGo 之后, 他发现数学是一门 很重要的学科,在解决实际问题的时候经常会要用到一些数学知识。 导致小 X 最近对数和数字比较感兴趣,而他喜欢把数拆成一位一位的数字来看, 例如712839 在小 X 眼中就是 1, 2, 3, 7, 8,9 六个数字。
    小 X 发现了一种完美数: 如果在一个数中, 1~9 这 9 种数字都出现至少一次, 例如 84376521931 这个数就很完美了。而如果缺了 1~9 中的某一种时, 这个数就不太完美, 例如 712839 中就缺了 4, 5, 6 三种数字
    但是小 X 发现 1~9 全出现在一个数中时, 这个数会非常大。为了避免这种情况,小 X 想了一个好办法,那就是判断一个数 n 是否完美时,不仅仅看这个数 n 本身是否包含 1~9 这 9 种数字,同时去看这个数的倍数。也就是说如果这个数 n 不完美,那就看 n 和 2n 两个数中是否包含了 1~9 这 9 种数字。如果还是没有,那就再看 n, 2n, 3n 三个数中是否包含了 1~9 这 9 种数字,以此类推。
    例如当 n = 712839 时, 这个数只包含了 1, 2, 3, 7, 8,9,所以并不完美
    2× n = 1425678,那么 n 中包含了 1, 2, 3, 7, 8,9,而 2× n 中又包含了 1, 2, 4, 5, 6, 7, 8,所以当我们数到 2× n 时这个数就完美了
    小 X 想知道对于任意一个从键盘输入的数 n, 需要数到多少时, 这个数才完美。小 X 自己并不知道答案, 但是他想到了你,想请你来帮他解决这个问题。

    输入

    输入数据仅有一行包含一个正整数 n, 表示小 X 想知道这个数 n 需要数到多少时才完美。

     输出

    输出一行仅有一个数ans, 表示需要数到ans这个数才完美, ans = k× n(k为正整数)。

    样例输入

    样例1: 
    1
    样例2: 
    312

    样例输出

    样例1: 
    9
    样例2: 
    1872
     
    方法:
    1、高精度。
    2、哈希记录已有的数。
    3、输出。
     
    标程:

    #include<bits/stdc++.h>
    using namespace std;
    int k[1000],t[10],w,c=1,n,i,ss;

    int main()
    {
        cin>>n;
        k[1]=n;
        i=1;
        w=i;
        while (k[i]/10>=1)
        {
            k[i+1]=k[i]/10;
            k[i]=k[i]%10;
            i+=1;
            w=i;
            }
        while (1)
        {
            for (i=1;i<=9;i++)
            {
                for (int j=1;j<=w;j++)
                {
                    if (k[j]==i)
                    {
                        t[i]=1;
                        break;
                    }
                } 
            }
            for (int kkk=1;kkk<=9;kkk++)
            {
             if (t[kkk]!=1)break;
             if (kkk==9)
             {
              for (int ii=w;ii>=1;ii--)
              {
               cout<<k[ii];
              }
              cout<<endl;
              return 0;
             }
            }
            c+=1;   
            k[1]+=n;
            i=1;
         while (k[i]/10>=1)
         {
          k[i+1]+=k[i]/10;
          k[i]=k[i]%10;
          i+=1;
          if (i>w)w=i;
            }
        }
        return 0;
    }

  • 相关阅读:
    Codeforces Round #636 (Div. 3)
    HTTP请求方法
    HDU2993
    《算法竞赛进阶指南》 #0x61 图论
    Codeforces Round #634 (Div. 3)
    Codeforces Round #633 (Div. 2)
    pandas 数据类型转换及描述统计
    pandas 数据库数据的读取
    pandas电子表格的读取(pandas中的read_excel)
    pandas外部数据的读取构造数据框-文本文件读取(一种utf-8中文编码乱码处理经验)
  • 原文地址:https://www.cnblogs.com/leonqqs/p/7083851.html
Copyright © 2011-2022 走看看