AOJ 0142 - Nature of Prime Numbers
何かTLEするとおもっていたら,n=1がだめだったようです.
n=1のとき,vのサイズが0です.
(1)の部分を最初for(int i=0;i
#include<iostream> #include<vector> #include<algorithm> int main(){ int n, arr[5000]; std::vector<int> v; while(std::cin >> n, n){ std::fill(arr, arr+5000, 0); v.clear(); for(int i=1;i<=(n-1)/2;i++){ if(std::find(v.begin(), v.end(), i*i%n) == v.end()){//まだない v.push_back(i*i%n); } } for(int i=0;i<v.size();i++){//(1) for(int j=i+1;j<v.size();j++){ int value = v[i] - v[j]; if(value < 0){ value += n; } if(value > (n-1)/2){ value = n - value; } arr[value]++; } } for(int i=1;i<=(n-1)/2;i++){ std::cout << arr[i]*2 << std::endl; } } }