結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-07-06 06:58:55 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,729 bytes |
| コンパイル時間 | 464 ms |
| コンパイル使用メモリ | 56,284 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-08 01:16:59 |
| 合計ジャッジ時間 | 1,354 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 18 WA * 15 |
ソースコード
//
// main.cpp
// Q11
//
// Created by AkihiroKOBAYASHI on 7/5/15.
// Copyright (c) 2015 Akhr5884. All rights reserved.
//
#include <iostream>
using namespace std;
string to_binString(unsigned int val){
if( !val ) {
return string("0");
}
string str;
while( val != 0 ) {
if( (val & 1) == 0 ) // val は偶数か?
str.insert(str.begin(), '0'); // 偶数の場合
else
str.insert(str.begin(), '1'); // 奇数の場合
val >>= 1;
}
return str;
}
int canGoValue(string binString) {
int i;
int value = 0;
for(i = 0; i < binString.size(); i++) {
if(binString[i] == '1') {
value++;
}
}
return value;
}
int main(int argc, const char * argv[]) {
using namespace std;
int goalvalue;
int *goalvalueArray;
int i = 0;
int add;
int count;
cin >> goalvalue;
goalvalueArray = (int*)malloc(sizeof(goalvalueArray) * (goalvalue + 1));
while(i <= goalvalue) {
goalvalueArray[i] = 0;
i++;
}
count = 1;
i = 1;
goalvalueArray[1] = 1;
while (1) {
if(i == goalvalue) {
cout << count << "\n";
return 0;
}
add = canGoValue(to_binString(i));
count++;
if(i + add <= goalvalue){
i += add;
goalvalueArray[i] = 1;
}
else if(i + add > goalvalue) {
i -= add;
if(goalvalueArray[i] == 1) {
count = -1;
cout << count << "\n";
return 0;
}
else {
goalvalueArray[i] = 1;
}
}
}
return 0;
}