# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
222410 | tqbfjotld | Popcount (COCI19_popcount) | C++14 | 6 ms | 384 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int n,k;
string toStr(int t){
if (n<64) t%=(1LL<<n);
if (t==0) return "0";
string base = "";
while (t>0){
base = ((char)('0'+t%10))+base;
t/=10;
}
return base;
}
string genNum(long long interval, bool b){
if (interval<64){
unsigned long long t = 0;
for (int x = 0; x<64; x++){
if ((x/interval)%2==b){
t += (1LL<<x);
}
}
if (n<64){
t%=(1LL<<n);
}
string base = "";
if (t==0) base = "0";
while (t>0){
base = (char)('0'+t%10)+base;
t/=10;
}
string res = base;
int shift = 64;
while (shift<=n){
res = "("+res+"+("+base+"<<"+toStr(shift)+"))";
shift += 64;
}
return res;
}
else{
unsigned long long t = -1;
if (n<64){
t%=(1LL<<n);
}
string base = "";
if (t==0) base = "0";
while (t>0){
base = (char)('0'+t%10)+base;
t/=10;
}
string ans = "0";
for (int shift = 1; shift*64<n; shift++){
if (((shift)/(interval/64))%2==b){
ans = "("+ans+"+("+base+"<<"+toStr(shift*64)+"))";
}
}
return ans;
}
}
int main(){
scanf("%d%d",&n,&k);
vector<string> ans;
for (int x = 0; x<k; x++){
ans.push_back("A=((A&"+genNum(1LL<<x,true)+">>"+toStr(1<<x)+")+(A&"+genNum(1LL<<x,false)+"))");
}
printf("%d\n",ans.size());
for (auto x : ans){
printf("%s\n",x.c_str());
}
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |