結果
| 問題 | 
                            No.826 連絡網
                             | 
                    
| コンテスト | |
| ユーザー | 
                             kamiyomokikanu
                         | 
                    
| 提出日時 | 2019-05-04 01:04:38 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,286 bytes | 
| コンパイル時間 | 566 ms | 
| コンパイル使用メモリ | 58,512 KB | 
| 実行使用メモリ | 6,824 KB | 
| 最終ジャッジ日時 | 2025-01-01 19:55:50 | 
| 合計ジャッジ時間 | 5,749 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 WA * 1 | 
| other | AC * 1 RE * 29 | 
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:44:17: warning: ‘pri’ may be used uninitialized [-Wmaybe-uninitialized]
   44 |         if(pri[P]==PRIME_NUM && P*2<N){
      |            ~~~~~^
main.cpp:20:13: note: ‘pri’ declared here
   20 |         int pri[NMAX+1];
      |             ^~~
            
            ソースコード
//Y街には家1~家Nがあり、一人ずつ住んでいる。
//青木君は家Pに住む
//※互いに素---最大公約数が1
//家1~家N同士は繋がっているが、互いに素な家同士は繋がっていない。
//家の数Nと、青木君Pが与えられるので、青木君と繋がってる数を考える
//素数以外はなんやかんやつながる。素数は*2がN以内にあればつながる。で考える。
#include<iostream>
#define NMAX (1000)
//PRIME_NUM 素数
//DEVIS_NUM not素数
#define PRIME_NUM 0
#define DEVIS_NUM 1
int main(void){
	int N,P;
	int pri[NMAX+1];
	std::cin>>N>>P;
	//WA対策。Pが1なら1を出力
	if(P==1){
		std::cout<<"1"<<std::endl;
		return 0;
	}
	//篩で素数を算出。
	for(int i=0;i<=N;i++){
		pri[i]=PRIME_NUM;
	}
	for(int i=2;i<=N;i++){
		if(pri[i]==PRIME_NUM){
			for(int j=i*2;j<=N;j+=i){
				pri[j]=DEVIS_NUM;
			}
		}
	}
	//Pが素数でP*2<Nなら、どことも繋げない。
	if(pri[P]==PRIME_NUM && P*2<N){
		std::cout<<"1"<<std::endl;
		return 0;
	}
	
	//素数に関して考慮しながら数える
	int ans=0;
	for(int i=2;i<=N;i++){
		//素数かつ、*2がN以上ならカウントしない
		if(!(pri[i]==PRIME_NUM && i*2>N)){
			ans++;
		}
	}
	std::cout<<ans<<std::endl;
	return 0;
}
            
            
            
        
            
kamiyomokikanu