一道很简单的打表题,看起来像是数学题,还在那里想有没有公式,,,然后,看了分析,说打表,果断写了下,然后和书上的代码改了改就发出了。
其实在寻找或者查询某个值的时候,我们会经常使用这种打表的思想,这种思想给我们带来的应该会是一种较为容易理解和最为朴素的感觉,就像是我们小学查字典一样,
那么问题来了,表从哪里得到呢?所以,首先我们应该人为的自己打一张供我们所查询的表,然后通过我们的输入来找到我们所需要的解,这就是打表,,,,
针对这个题,我们只要一次枚举出100000内的所有正整数m,然后查表就可以了。
# include<cstdio> # include<iostream> # include<cstring> using namespace std; # define MAX 100000 int a[MAX+10]; int main(void) { int T,n; memset(a,0,sizeof(a)); for ( int i = 1;i < MAX+10;i++ ) { int x = i; int y = i; while ( x>0 ) { y+=x%10; x/=10; } if ( a[y]==0||i<a[y] ) a[y] = i; } cin>>T; while ( T-- ) { cin>>n; cout<<a[n]<<endl; } return 0; }