3315. 切蛋糕
1.题意:
2.题解:
分情况,具体看代码
3.ac代码:
#include<bits/stdc++.h>
#include<iostream>
#define ll long long
#define N 300
#include<set>
using namespace std;
int s[4];
int main(){
int t;
cin>>t;
while(t--){
cin>>s[0]>>s[1]>>s[2];
sort(s,s+3);
int a=s[0],b=s[1],c=s[2];
if(!a&&!b){
puts("0");
}else if(!a){
if(b==c)
puts("1");
else
puts("2");
}else{
if(a+b==c||a==b||b==c){
puts("2");
}else{
puts("3");
}
}
}
}
26. 二进制中1的个数
1.题意:
2.题解:
yxc:
在C++中如果我们右移一个负整数,系统会自动在最高位补1,这样会导致 nn 永远不为0,就死循环了。
解决办法是把 nn 强制转化成无符号整型,这样 nn 的二进制表示不会发生改变,但在右移时系统会自动在最高位补0。
或者题里有说几位数,循环几位
3.ac代码:
class Solution {
public:
int NumberOf1(int n) {
unsigned int num=n;
int res=0;
while(num){
res+=num&1;
num=num>>1;
}
}
};
25. 剪绳子
1.题意:
2.题解:
3.ac代码:
class Solution {
public:
int maxProductAfterCutting(int length) {
int res=1;
if(length<=3) res=1*(length-1),length=0;
else if(length%3==1) res=4,length-=4;
else if(length%3==2) res=2,length-=2;
while(length){
res=res*3;
length-=3;
}
return res;
}
};