結果

問題 No.3 ビットすごろく
ユーザー Drakkon
提出日時 2018-02-20 17:50:19
言語 C
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 2,651 bytes
コンパイル時間 1,081 ms
コンパイル使用メモリ 30,976 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-07-20 04:54:28
合計ジャッジ時間 1,590 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 10 WA * 23
権限があれば一括ダウンロードができます

ソースコード

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;
scanf("%d", &n);
/*�S�[�����O�܂ł̎𐔂���*/
do{
if(j + bitCount(j) <= n){
j += bitCount(j);
i++;
}
else{
break;
}
}while(j < n);
/*�S�[���ɒ��ڍs����}�X�����߁A�o�͂���*/
if(j == n){
printf("%d\n", i);
}
else{
t = explore1(n);
i++;
if(t == -1){
printf("%d\n", -1);
}
else{
if(explore2(t, n) != j){
do{
if(explore1(t) == -1){
printf("%d\n", -1);
break;
}
else if(explore2(t,n) == j){
i++;;
break;
}
else{
t = explore1(t);
i += 2;
}
}while(0);
printf("%d\n", i);
}
else{
i++;
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;
digits = numberOfDigits(e2);
while(i <= digits || t < n){
t = e2 + i;
if(t - bitCount(t) == e2){
return t;
break;
}
i++;
}
return -1;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0