fork download
  1. #include<iostream>
  2. #include<math.h>
  3. using namespace std;
  4.  
  5. int main(){
  6.  
  7. // 配列matrixは、a^bの表
  8. // 配列checkは、nの何乗未満を調べるのかを保存
  9. int matrix[101][101] = {0};
  10. int check[11] = {0,0,7,5,4,3,3,3,3,3,3};
  11.  
  12. // 重なる数字のところに「1」を代入していく
  13. for(int a = 2; a < 11; a++){
  14. for(int b = 4; b < 101; b++){
  15.  
  16. // bの約数を求める
  17. int root = sqrt((double)b) + 1;
  18. for(int n = 2; n < root; n++){
  19. if(b % n == 0){
  20.  
  21. // 調べるべき累乗の数かどうかの判断
  22. // 範囲内なら「1」を格納
  23. if(n < check[a]) {matrix[(int)pow((double)a,(double)n)][b/n] = 1;}
  24. if(b/n < check[a]) {matrix[(int)pow((double)a,(double)b/n)][n] = 1;}
  25. }
  26. }
  27. }
  28. }
  29.  
  30. // 異なる数字を数える
  31. int count = 0;
  32. for(int a = 2; a < 101; a++){
  33. for(int b = 2; b < 101; b++){
  34. if(matrix[a][b] == 0) {count++;}
  35. }
  36. }
  37.  
  38. // 異なる数字の数を出力する
  39. cout << count << endl;
  40. return 0;
  41. }
Success #stdin #stdout 0.01s 2724KB
stdin
Standard input is empty
stdout
9277