其他分享
首页 > 其他分享> > P1008 [NOIP1998 普及组] 三连击——简单的map暴力解法

P1008 [NOIP1998 普及组] 三连击——简单的map暴力解法

作者:互联网

 

解题思路:

设三数为 a、b、c,由范例得a的最小值为 192,c的最大值为 987,即a的最大值为 987/3,以此为枚举范围。
用 map 存储九个数位里每个数字的出现次数(哈希表的思想),1~9 都出现了一次那就是符合条件啦。

 

AC代码:

 1 #include<cstdio>
 2 #include<map>
 3 using namespace std;
 4 int main()
 5 {
 6     for(int i=192;i<=987/3;i++)
 7     {
 8         map<int,int> m;
 9         m[i/100]++;
10         m[i%100/10]++;
11         m[i%10]++;
12         m[i*2/100]++;
13         m[i*2%100/10]++;
14         m[i*2%10]++;
15         m[i*3/100]++;
16         m[i*3%100/10]++;
17         m[i*3%10]++;
18         if(m[1]==1&&m[2]==1&&m[3]==1&&m[4]==1&&m[5]==1&&m[6]==1&&m[7]==1&&m[8]==1&&m[9]==1)
19             printf("%d %d %d\n",i,i*2,i*3);
20     } 
21     return 0;
22 }

 

标签:map,连击,P1008,10,++,987,int,&&,100
来源: https://www.cnblogs.com/ibfk/p/14591919.html