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<bits/stdc++.h>
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<cstdio>
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<bits/stdc++.h>
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<iostream>
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