码迷,mamicode.com
首页 > 其他好文 > 详细

uva 1583 Digit Generator(Uva-1583)

时间:2018-10-01 23:49:21      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:比较   ||   预处理   时代   ble   efi   最大   一个   iostream   

题目不再写入了,vj:https://vjudge.net/problem/UVA-1583#author=0

主要讲的是找一个数的小于它的一个数,小于它的那个数每一位加起来再加上那个数就会等于原来的数。没有就是0.

这个题实际上感觉也直接暴力for就行。数最大是1e5.那么最多5个9那么就是45,直接用stringstream或者其他的方法进行分位然后寻找就行。

找到就break那么这个数就是最小的。

刘汝佳的做法是直接预处理一个数组然后根据数组找数,实在是感觉非常的高明,同时代码量也比较小。

代码:

#include <iostream>
using namespace std;
#define max 100010
int a[max];
main()
{
    for(int i=1;i<max;i++)
    {
        int x=i;int y=i;
        while(x) {y+=x%10;x/=10;}
        if(a[y]==0||i<a[y]) a[y]=i;
    }
    int p,b;
    cin>>p;
    while(p--)
    {
        cin>>b;
        cout<<a[b]<<endl;
    }
}

这种思想应该得注意!!!直接预处理。

uva 1583 Digit Generator(Uva-1583)

标签:比较   ||   预处理   时代   ble   efi   最大   一个   iostream   

原文地址:https://www.cnblogs.com/baccano-acmer/p/9736030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!