洛谷入门分支结构

P5709 苹果和虫子

八尾勇喜欢吃苹果。她现在有 mm(1 \le m \le 1001≤m≤100)个苹果,吃完一个苹果需要花费 tt(0 \le t \le 1000≤t≤100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 ss(1 \le s \le 100001≤s≤10000)分钟,请问她还有几个完整的苹果?

注意题目的坑
1.t是可以等于0的,所以不能作为除数,要特判
2.完整:注意ceil
3.如果吃完了呢,所以不能是负数,就是0

P5710 数的性质
像这种一个人喜欢满足几个的,就设置一个计数器,然后每满足一个条件,就计数器+1

P5711 闰年

{
cout<<((n%4==0&&n%100!=0)||(n%400==0))?1:0;
}

P5715 三位数排序问题
1.定义数组,输入数组,sort,输出
2.选择排序,三个swap ab之间比较两次

P1085 不高兴的津津
1.设置三个数组,然后比较第三个数组和8关系以及自身之间max的迭代

#include
using namespace std;
int main()
{int x,y,max=8,ans=0,j,i;
int a[8],b[8],c[8];
for(int i=1;i<=7;i++)
{cin>>a[i]>>b[i];
c[i]=a[i]+b[i];
if(c[i]>=max)这里写成这样子只能拿三十分
/*if((c[i]>max)&&(c[i]>8)) (max=0)也可以 去掉等于号,原式就对了) 细节怪*/
{max=c[i]; 
 ans=i;
}
}
cout<<ans;
return 0;
}

P1909 买铅笔
s=n*1.0/x;这个1.0千万不能忘记
看到一种优化方法:位运算

#include
    using namespace std;
    int i,j,k,n,m,w,ans;
    int main(){
        scanf("%d",&n);
        for(i=0;i<3;i++){
            scanf("%d%d",&j,&k);m=j;w=k;//输入并存下初始的价格与数量
            while(j<n){j<<=1;k<<=1;}//价格与数量不断*2直到数量大于n
            while(j>n){j-=m;k-=w;}//*2有可能导致买太多了,减去一些(因为while在前面,不能控制最后结果,所以需要下面一个while来控制
            while(j<n){j+=m;k+=w;}//减去之后又可能太少了,加上一些
            //其实就是大幅度地上调,然后做一些微调
            if(k<ans||ans==0)ans=k;//判断是否是最小花费
        }
        printf("%d\n",ans);
        return 0;//输出并返回
    }

P1424小鱼的航程

有一只小鱼,它平日每天游泳 250 公里,周末休息(实行双休日),假设从周 xx 开始算起,过了 nn 天以后,小鱼一共累计游泳了多少公里呢?

可以把七天放进数组里面,然后每一次都是取对7的榆树对应的数组的数据相加,还是相当妙的,让我想到了深搜里面换方向

#include
using namespace std;
int main()
{
	long long int n,m,s=0;///啊对对对不要忘记总路程会很长很长
    int x,a[7]={0,250,250,250,250,250,0};
	cin>>x>>n;
	
	for(int i=x;i<x+n;i++)
	 {s+=a[i%7];
	 }
    cout<<s;
return 0;
}

当然也可以用一个循环,然后每次到达7,自动归1;

P1888三角函数
先排序得到从小到大的顺序,比较有意义的是约分吧

for(int i=2;i<=c ;i++)
		 while(c%i==0 && a%i==0)//找公因数
		 {
		 	c=c/i;
		 	a=a/i;
		 }

P4414 ABC
把数字和字母对应上,其实就是对应着输入的输出,把数字抽象出大小

#include
using namespace std;
int a,b,c,i,x,y,z,sum;
char ch;
int main()
{
	cin>>x>>y>>z;
	sum=x+y+z;
	a=min(min(x,y),z);
	c=max(max(x,y),z);
	b=sum-a-c;
	for(i=1;i<=3;i++)
	{
		cin>>ch;
		if(ch=='A') cout<<a<<' ';
		if(ch=='B') cout<<b<<' ';
		if(ch=='C') cout<<c<<' ';
	}
	return 0;
}

P1055 ISBN号码
1.要对照的话,可以用数组设置一个答案库,然后数组下标就可以有意义了
2.遇到“-” continue

你可能感兴趣的:(c++,算法,开发语言)