CSDN竞赛第35期题解
Posted 酷酷的Herio
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSDN竞赛第35期题解相关的知识,希望对你有一定的参考价值。
CSDN竞赛第35期题解
1、题目名称:交换后的or
给定两组长度为n的二进制串,请问有多少种方法在第一个串中交换两个不同位置上的数字,使得这两个二进制串“或”的
结果发生改变?
int n;cin>>n;
string a,b;cin>>a>>b;
int cnt = 0;
//for(int i=0;i<n;i++) if(a[i]=='1') cnt++;
ll ans = 0;
int u,v,w,x=0;
u=v=w=x=0;
for(int i=0;i<n;i++)
if(a[i]=='1') u++;
else v++;
if(b[i]=='0')
if(a[i]=='0') w++;
else x++;
ans = 1LL*v*x+1LL*u*w-x*w;
cout<<ans;
return 0;
2、题目名称:争风吃醋的豚鼠
N个节点两两建边。 不存在3个节点相互之前全部相连。(3个节点连接成环) 最多能建立多少条边?
ll n ;
cin>>n;
printf("%lld\\n",n/2*(n-n/2));
3、题目名称:最长递增的区间长度
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3
int n;cin>>n;
int ans =0,cnt=0;
rep(i,1,n)
cin>>a[i];
rep(i,1,n)
if(a[i]>a[i-1])
cnt++;
else
cnt = 1;
ans=max(ans,cnt);
cout<<ans;
return 0;
4、题目名称:因数-数字游戏
小Q的柠檬汁做完了。 掏出了自己的数字卡牌。 想要和别人做数字游戏。 可是她又不想要输掉游戏。 她制定好规则,轮
流出牌,每个人只能给出前1个人所出的牌的某个因子牌。 但是这个因子不能是1或者该数本身。 现在给出整数n。 两个
人开始做游戏,轮流给出上一张牌的某个因子牌,谁无法再给出因子牌则该人胜利,如果该整数无因子牌直接视为先手胜
利,请判断先手在最优策略状态下能否必胜。
int solution(long long n)
int result;
// TODO:
long long cnt = 0;
for(long long i=2;i*i<=n;i++)
if(n%i==0)
while(n%i==0)
n/=i;
cnt++;
if(n>1) cnt++;
if(cnt==0) return 1;
if(cnt==2) return 2;
return 1;
int main()
long long n;
std::cin>>n;
int result = solution(n);
std::cout<<result<<std::endl;
return 0;
以上是关于CSDN竞赛第35期题解的主要内容,如果未能解决你的问题,请参考以下文章