結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
184
|
| 提出日時 | 2014-10-01 06:27:20 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,257 bytes |
| コンパイル時間 | 858 ms |
| コンパイル使用メモリ | 70,088 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-12-30 06:54:06 |
| 合計ジャッジ時間 | 2,261 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 12 WA * 21 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:25:32: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
25 | int move[10001],n;scanf("%d",&n);
| ~~~~~^~~~~~~~~
ソースコード
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
#include <queue>
using namespace std;
/*
正解してたら匿名でも問題投稿ができる(実現度アップ)!!!
*/
int bitcount(int a){
int cnt=0;
do{if(a&1)cnt++;}
while(a>>=1);
return cnt;
}
int main(){
int move[10001],n;scanf("%d",&n);
move[0]=0,move[n]=1;
for(int i=0;i<n;i++)move[i]=bitcount(i);
vector<int> ps;
int visit[10001]={};
visit[1]=1;
ps.push_back(1);
int cnt=1;
int next,prev;
for(int i=0;i<ps.size()&&ps.size()<n;i++){
next=ps[i]+move[ps[i]];
prev=ps[i]-move[ps[i]];
//printf("%d\n",ps[i]);
//printf("move %d\n",move[ps[i]]);
if(!visit[next]&&next<=n){
visit[next]=visit[ps[i]]+1;
ps.push_back(next);
cnt++;
//printf("next %d move %d\n",next,move[i]);
if(next==n){
printf("%d\n",cnt);
return 0;
}
}
if(!visit[prev]&&prev>=1){
visit[prev]=visit[ps[i]]+1;
ps.push_back(prev);
cnt++;
//printf("prev %d move %d\n",prev,move[i]);
}
}
printf("-1\n");
return 0;
}
184