[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
剪枝:
1:个位为0,1,5,6可以直接跳过。
2:只要发现某一位重复,跳过
附一下代码:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[10],flag;
  4. int main()
  5. {
  6. for(long long i=100000;i<=999999;++i)
  7. {
  8. for(int j=0;j<=9;++j)a[j]=0;
  9. flag=0;
  10. if(i%10==0||i%10==1||i%10==5||i%10==6)continue;
  11. long long m=i*i;
  12. a[i%10]=1;
  13. if(a[i/10%10]==1)continue;
  14. a[i/10%10]=1;
  15. if(a[i/100%10]==1)continue;
  16. a[i/100%10]=1;
  17. if(a[i/1000%10]==1)continue;
  18. a[i/1000%10]=1;
  19. if(a[i/10000%10]==1)continue;
  20. a[i/10000%10]=1;
  21. if(a[i/100000%10]==1)continue;
  22. a[i/100000%10]=1;
  23. while(m>0)
  24. {
  25. if(a[m%10]==1)
  26. {
  27. flag=1;
  28. break;
  29. }
  30. m/=10;
  31. }
  32. if(flag)continue;
  33. for(int j=0;j<=9;++j)
  34. {
  35. if(a[j]>1)continue;
  36. }
  37. cout<<i<<"\n";
  38. flag=0;
  39. }
  40. }
复制代码
耗时:0.1638s
是不是很快?C++就是快。
STL**好,退C转C++保平安。

TOP

返回列表