BOJ-1244スイッチオン/オフ(C++)
17086 ワード
質問元:https://www.acmicpc.net/problem/1244
問題の難易度
Silver 4
問題の処理方法
論理を理解して編成すればいい.
でも微妙に和弦が違うのにずっと間違っていたので驚きました.
パスコード
なぜコードが間違っているのかまだ分かりません
問題の難易度
Silver 4
問題の処理方法
論理を理解して編成すればいい.
でも微妙に和弦が違うのにずっと間違っていたので驚きました.
パスコード
#include <iostream>
#include <algorithm>
using namespace std;
int arr[101];
int N;
void ifGirl(int n) {
int left = n - 1;
int right = n + 1;
arr[n] = !arr[n];
while (left >= 1 && right <= N) {
if (arr[left] != arr[right]) {
break;
}
arr[left] = !arr[left];
arr[right] = !arr[right];
left--;
right++;
}
}
void ifBoy(int n) {
for (int i = n; i <= N; i += n) {
arr[i] = !arr[i];
}
}
int main() {
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
}
int type;
cin >> type;
for (int i = 0; i < type; i++) {
int sex, n;
cin >> sex >> n;
if (sex == 1) {
ifBoy(n);
}
else ifGirl(n);
}
for (int i = 1; i <= N; i++) {
cout << arr[i] << " ";
if (i % 20 == 0) cout << "\n";
}
return 0;
}
フィードバックなぜコードが間違っているのかまだ分かりません
#include <iostream>
#include <algorithm>
using namespace std;
int arr[101];
int N;
void ifGirl(int n) {
int left = n - 1;
int right = n + 1;
while (left >= 1 && right <= N) {
if (arr[left] != arr[right]) {
arr[n] = !arr[n];
return;
}
left--;
right++;
}
for (int i = left + 1; i < right; i++) {
arr[i] = !arr[i];
}
}
void ifBoy(int n) {
int num = 1;
while (n * num <= N) {
n = n * num;
arr[n] = !arr[n];
num++;
}
}
int main() {
cin >> N;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
}
int type;
cin >> type;
for (int i = 0; i < type; i++) {
int sex, n;
cin >> sex >> n;
if (sex == 1) {
ifBoy(n);
}
else ifGirl(n);
}
for (int i = 1; i <= N; i++) {
cout << arr[i] << " ";
if (i % 20 == 0) cout << "\n";
}
return 0;
}
Reference
この問題について(BOJ-1244スイッチオン/オフ(C++)), 我々は、より多くの情報をここで見つけました https://velog.io/@woga1999/BOJ-1244번-스위키-켜고-끄기-Cテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol