Submission #1217283


Source Code Expand

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <string>
#include <algorithm>
#include <iostream>
#include <string>
#include <map>
#include <set>
#include <functional>
#include <iostream>
#define MOD 1000000007LL
using namespace std;
typedef long long ll;
typedef pair<int,int> P;

ll n;
int bit[70];
ll dp[71][2][2][2];

int main(void){
	scanf("%lld",&n);
	ll nn=n;
	int cnt=0;
	while(nn>0){
		bit[cnt]=nn&1;
		nn>>=1;
		cnt++;
	}
	dp[0][0][0][0]=1;
	for(int i=0;i<cnt;i++){
		for(int j=0;j<2;j++){
			for(int k=0;k<2;k++){
				for(int l=0;l<2;l++){
					int nk,nl,nj;
					for(int nx=0;nx<=1;nx++){
						for(int ns=0;ns<=1;ns++){
							if(nx==1 && ns==0)continue;
							if(nx==1 && ns==1){
								ns+=j;
								if(bit[i]<nx)nk=1;
								if(bit[i]==nx)nk=k;
								if(bit[i]>nx)nk=0;
								nj=(ns>=2)?1:0;
								if(bit[i]<ns-nj*2)nl=1;
								if(bit[i]==ns-nj*2)nl=l;
								if(bit[i]>ns-nj*2)nl=0;
								dp[i+1][nj][nk][nl]+=dp[i][j][k][l];
								dp[i+1][nj][nk][nl]%=MOD;
								ns-=j;
							}
							if(nx==0 && ns==0){
								ns+=j;
								if(bit[i]<nx)nk=1;
								if(bit[i]==nx)nk=k;
								if(bit[i]>nx)nk=0;
								nj=(ns>=2)?1:0;
								if(bit[i]<ns-nj*2)nl=1;
								if(bit[i]==ns-nj*2)nl=l;
								if(bit[i]>ns-nj*2)nl=0;
								dp[i+1][nj][nk][nl]+=dp[i][j][k][l];
								dp[i+1][nj][nk][nl]%=MOD;
								ns-=j;
							}
							if(nx==0 && ns==1){
								ns+=j+1;
								if(bit[i]<nx)nk=1;
								if(bit[i]==nx)nk=k;
								if(bit[i]>nx)nk=0;
								nj=(ns>=2)?1:0;
								if(bit[i]<ns-nj*2)nl=1;
								if(bit[i]==ns-nj*2)nl=l;
								if(bit[i]>ns-nj*2)nl=0;
								dp[i+1][nj][nk][nl]+=dp[i][j][k][l];
								dp[i+1][nj][nk][nl]%=MOD;
								ns-=j+1;
							}
						}
					}
				}
			}
		}
	}
	printf("%lld\n",dp[cnt][0][0][0]);
	return 0;
}

Submission Info

Submission Time
Task D - Xor Sum
User ryoissy
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1918 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:23:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld",&n);
                  ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 19
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_max_01.txt, subtask_1_rand_01.txt, subtask_1_rand_02.txt, subtask_1_rand_03.txt, subtask_1_rand_04.txt, subtask_1_rand_05.txt, subtask_1_small_rand_01.txt, subtask_1_small_rand_02.txt, subtask_1_small_rand_03.txt, subtask_1_small_rand_04.txt, subtask_1_small_rand_05.txt, subtask_1_specific_01.txt, subtask_1_specific_02.txt, subtask_1_specific_03.txt, subtask_1_specific_04.txt, subtask_1_specific_05.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_max_01.txt AC 1 ms 256 KB
subtask_1_rand_01.txt AC 1 ms 256 KB
subtask_1_rand_02.txt AC 1 ms 256 KB
subtask_1_rand_03.txt AC 1 ms 256 KB
subtask_1_rand_04.txt AC 1 ms 256 KB
subtask_1_rand_05.txt AC 1 ms 256 KB
subtask_1_small_rand_01.txt AC 1 ms 256 KB
subtask_1_small_rand_02.txt AC 1 ms 256 KB
subtask_1_small_rand_03.txt AC 1 ms 256 KB
subtask_1_small_rand_04.txt AC 1 ms 256 KB
subtask_1_small_rand_05.txt AC 1 ms 256 KB
subtask_1_specific_01.txt AC 1 ms 256 KB
subtask_1_specific_02.txt AC 1 ms 256 KB
subtask_1_specific_03.txt AC 1 ms 256 KB
subtask_1_specific_04.txt AC 1 ms 256 KB
subtask_1_specific_05.txt AC 1 ms 256 KB