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