题目过几天更新,先粘代码。
异或运算。
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
char a[21],b[21];
int c[21];
long long int sum;
long long int k;
sum=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
cin>>b[i];
}
for(int i=0;i<n;i++)
{
if(a[i]==b[i])
c[i]='0'-'0';
else
c[i]='1'-'0';
}
for(int i=0;i<n;i++)
{
k=2;
for(int j=n-i-1;j>1;j--)
{
k=k*2;
}
if(n-i-1==1)
k=2;
if(n-i-1==0)
k=1;
sum+=c[i]*k;
}
cout<<sum<<endl;
return 0;
}
分堆,大佬告诉我最佳序列为k,k+1,k,k+1,k....,瞬间发现自己蠢了。
我的代码:
#include <iostream>
#include <cstdio>
using namespace std;
int c(int n,int k)
{
if(n<=k)
return 0;
else
return c(n-k-1,k)+1;
}
int main() {
int n,k;
cin>>n>>k;
if(n<k)
{
cout<<0<<endl;
return 0;
}
cout<<c(n-k,k)+1<<endl;
return 0;
}
大佬代码:
#include <cstdio>
#define maxn 109
using namespace std;
int main(){
int n, k, ans;
scanf("%d%d",&n, &k);
ans = n / (2 * k + 1);
ans *= 2;
if(n % (2 * k + 1) >= k)
ans++;
printf("%d\n",ans);
//system("pause");
return 0;
}