結果

問題 No.3 ビットすごろく
ユーザー Drakkon
提出日時 2018-02-21 17:52:24
言語 C
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 2,450 bytes
コンパイル時間 355 ms
コンパイル使用メモリ 31,872 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-09-18 18:22:32
合計ジャッジ時間 1,402 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 12 WA * 21
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include <stdio.h>
int bitCount(int m);
int numberOfDigits(int d);
int explore1(int e1);
int explore2(int e2, int n);
int main(void){
/*n:�S�[�� i:� j:�S�[�����O�̃}�X*/
int n, i = 1, j = 1, t = 1;
scanf("%d", &n);
/*�S�[�����O�܂ł̎𐔂���*/
do{
if(j + bitCount(j) <= n){
j += bitCount(j);
i++;
}
else{
break;
}
}while(j < n);
/*�𓚂��o�͂���*/
if(j == n){
printf("%d\n", i);
}
else{
do{
j -= bitCount(j);
i++;
do{
j += bitCount(j);
i++;
if(j > n){
j = -1;
break;
}
else if(j == n){
break;
}
}while(j + bitCount(j) != explore1(n));
if(j <= 1){
break;
}
}while(0);
if(j <= 1){
printf("%d\n", -1);
}
else{
printf("%d\n", i);
}
}
return 0;
}
//��i���ɂ����Ƃ���1�̐������߂�֐�
int bitCount(int m){
int i = 1, count = 0;
if(m % 2 != 0){
count++;
m--;
}
while(i < m){
i *= 2;
}
if(i > m){
i /= 2;
}
while(m > 0){
m -= i;
i /= 2;
count++;
}
return count;
}
//��i���ɂ����Ƃ��̌��������߂�֐�
int numberOfDigits(int d){
int i = 1, j = 0;
while(i < d){
i *= 2;
}
if(i > d){
i /= 2;
}
while(i > 0){
i /= 2;
j++;
}
return j;
}
//n�ɂ�����}�X���������֐�(n�����Ă�������)
//digits:���� t:e1 - i��ۑ�
int explore1(int e1){
int i = 1, digits, t;
digits = numberOfDigits(e1);
while(i <= digits){
t = e1 - i;
if(t + bitCount(t) == e1){
return t;
break;
}
i++;
}
return -1;
}
//n�ɂ�����}�X�ɂ�����}�X��O����T���֐�
//digits:���� t:e2 + i��ۑ� n:���C���֐�����n������
int explore2(int e2, int n){
int i = 1, digits, t = 0;
digits = numberOfDigits(e2);
while(i <= digits || t <= n){
t = e2 + i;
if(t - bitCount(t) == e2){
return t;
break;
}
i++;
}
return -1;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0