目录
1.害死人不偿命的(3n+1)猜想
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int times = 0;
while(n!=1){
if(n%2==0){
n/=2;
}else{
n = (3*n+1)/2;
}
times++;
}
printf("%d\n",times);
return 0;
}
2.挖掘机技术哪家强
第一次有一个测试点没通过,是因为我在求得分最高时使用的max_value初始定义为0,导致不能通过极限测试用例。
我猜测有可能只有一个学校参赛,且得分为0。
所以在进行这种求最大值的过程中,初始值一定要设为一个不可能达到的值,我将0改成-1之后就通过了所有测试点
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
const int maxn = 100002;
int school[maxn]={0};
int main(){
int n;
scanf("%d",&n);
int id,score,school_num=0;
for(int i=0;i<n;i++){
scanf("%d %d",&id,&score);
school[id]+=score;
if(id>school_num){
school_num = id;
}
}
int max_id,max_score=-1;//要定义为一个不可能的分数,不可以用0
for(int i=1;i<=school_num;i++){
if(school[i]>max_score){
max_score = school[i];
max_id = i;
}
}
printf("%d %d",max_id,max_score);
return 0;
}
3.A+B 和 C
我一开始使用的是int,后面两个测试点无法通过。
因为数据大小的原因,要用long long型变量,与之配套的是%lld进行输入和输出
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
int n;
scanf("%d",&n);
long long a,b,c;
for(int i=1;i<=n;i++){
scanf("%lld%lld%lld",&a,&b,&c);
if(a+b>c){
printf("Case #%d: true",i);
}else{
printf("Case #%d: false",i);
}
if(i!=n){
printf("\n");
}
}
return 0;
}
4.部分A+B
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
int get_factor(int a,int x){
int num=0;
int y;
while(a!=0){
if(a%10==x){
num++;
}
a/=10;
}
return num;
}
int get_sum(int x,int num){
int final=0;
while(num--!=0){
final = final * 10 + x;
}
return final;
}
int main(){
int a,x,b,y;
scanf("%d%d%d%d",&a,&x,&b,&y);
int sum_value = get_sum(x,get_factor(a,x))+get_sum(y,get_factor(b,y));
printf("%d",sum_value);
return 0;
}
5.程序运行时间
1.取模的操作必须整数
2。如果可以避免浮点数就避免浮点数
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<set>
#include<queue>
#include<algorithm>
using namespace std;
int main(){
int x,y;
scanf("%d%d",&x,&y);
int gap=y-x;
//防止麻烦,提前判断四舍五入
if(gap%100<50){
gap = gap/100;
}else{
gap = gap/100+1;
}
printf("%02d:%02d:%02d",gap/3600,(gap/60)%60,gap%60);
return 0;
}