AtCoder Beginner Contest 096 解説備忘録
前書き
AtCoder Beginner Contest 096 を解いてみた.解けなかった問題の備忘録.
C問題
・vector<int> dx{1,-1,0,0};
,vector<int> dy{0,0,1,-1};
でfor文を回せばまだ速かったかも.
D問題
・一の位が1である素数を取り出せば良い,そうすればどの5つを取っても,その和の一の位は絶対5になるため,合成数(5の倍数)となる(気づかん).
以下ACのコード:
main.cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cmath>
#include <set>
#include <sstream>
#include <bitset>
#include <stack>
#include <cstdlib>
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
typedef long long ll;
using namespace std;
bool IsPrime(int num)
{
if (num < 2) return false;
else if (num == 2) return true;
else if (num % 2 == 0) return false; // 偶数はあらかじめ除く
double sqrtNum = sqrt(num);
for (int i = 3; i <= sqrtNum; i += 2)
{
if (num % i == 0)
{// 素数ではない
return false;
}
}
// 素数である
return true;
}
int main() {
int n;
cin >> n;
vector<int> ans(n,0);
int i=1,j=0;
while(ans[n-1]==0){
int a;
a = 1 + 10*i;
if(IsPrime(a)){
ans[j] = a;
j++;
}
i++;
}
FOR(i, 0, n){
cout << ans[i] << endl;
}
return 0;
}
あとがき
比較的簡単な回だった...?
精進します.
Author And Source
この問題について(AtCoder Beginner Contest 096 解説備忘録), 我々は、より多くの情報をここで見つけました https://qiita.com/ofutonton/items/84617175ab5dd8e40ce4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .