# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
222410 | tqbfjotld | Popcount (COCI19_popcount) | C++14 | 6 ms | 384 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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());
}
}
Compilation message (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... |