小小的总结,小小的分析了一下,如果对您有帮助,请动动你的小手给个赞吧!
如果有更好的解法可以在评论区留言哦!
1.数的性质
/*根据各自的条件来进行判断就行了*/
#include
using namespace std;
int main()
{
int num;
cin>>num;
if(num%2==0&&(num>4&&num<=12))
cout<<1<<" "<<1<<" "<<0<<" "<<0;
else if(num%2!=0&&(num<=4||num>12))
cout<<0<<" "<<0<<" "<<0<<" "<<1;
else if((num%2!=0&&(num>4&&num<=12))||(num%2==0&&(num<=4||num>12)))//也可以不用这个条件,直接else就行了
cout<<0<<" "<<1<<" "<<1<<" "<<0;
return 0;
}
2.判断闰年
/*根据闰年的判断直接输出就行*/
#include
using namespace std;
int main()
{
int year;
cin>>year;
cout<<((year%400==0)||(year%4==0&&year%100!=0))?1:0;
return 0;
}
3.Apples
#include
using namespace std;
int main()
{
int n;
cin>>n;
if(n<3)
cout<<"Today, I ate "<<n<<" apple.";
else
cout<<"Today, I ate "<<n<<" apples.";
return 0;
}
4.洛谷团队系统
/*这题有两种方法
一种是去计算各自所需要的时间然后对比
另一种是经过计算,当题目小于6时,都是本地时间花得少,从6开始洛谷团队系统的用时少
推荐第二种方法,少了计算的步骤*/
#include
using namespace std;
int main()
{
int n;
cin>>n;
if(n<6)
cout<<"Local";
else
cout<<"Luogu";
return 0;
}
5.肥胖问题
/*这题用判断语句按要求输出就可以了*/
#include
using namespace std;
int main()
{
double BIMI,h,m;
cin>>m>>h;
BIMI=m/(h*h);
if(BIMI<18.5)
cout<<"Underweight";
else if(BIMI>=24)
cout<<BIMI<<endl<<"Overweight";
else
cout<<"Normal";
return 0;
}
6.三位数排序
/*我用的是sort函数来进行快速排序,运行时间是o(nlogn),是快速排序时间的一个期望值
sort(start,end,cmp)
start是开始的位置,end是结束元素的后一个位置,cmp是排序的方法,默认是升序
如果是要降序的话,第三个位置可以写成:greater(),或者自己定义一个返回两个数较大的那个数的函数也行*/
#include
using namespace std;
int num[3];
int main()
{
cin>>num[0]>>num[1]>>num[2];
sort(num,num+3);
cout<<num[0]<<" "<<num[1]<<" "<<num[2];
return 0;
}
7.月份天数
/*首先定义一个数组储存一年中每个月的天数,月数就是数组的下标
其次判断是否是闰年,根据判断结果来改变二月的天数
根据输入,输出对应的天数*/
#include
using namespace std;
int main()
{
int year,month;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
cin>>year>>month;
if(year%400==0||(year%4==0&&year%100!=0))
day[2]=29;
cout<<day[month];
return 0;
}
8.不高兴的津津
#include
using namespace std;
int main()
{
int a,b,day=0,max=0,i;
for(i=1;i<=7;i++)/*循环输入每天的上课时间,并进行判断*/
{
cin>>a>>b;
if(a+b>max&&a+b>8)/*如果超过8小时,并且比原先的max大,则更新上课的最长时间max,以及当天的天数day*/
{
max=a+b;
day=i;
}
}
cout<<day;/*输出对应的时间*/
return 0;
}
9.买铅笔
/*设置一个最小值,分别对每次输入的数据进行计算要花费多少钱
如果这个花费比min小的话,就更新min的值
最后输出min*/
#include
using namespace std;
int main()
{
int need,cost,num_buy,num_one,price,min=99999999,i;/*此处的min定义不能小于一定的数,不然会有些测试点过不了*/
cin>>need;
for(i=0;i<3;i++)
{
cin>>num_one>>price;
num_buy=(need%num_one==0)?need/num_one:need/num_one+1;/*计算所要购买几包*/
cost=num_buy*price;
if(cost<min)
min=cost;
}
cout<<min;
return 0;
}
/*在解答中看到一个比较简短的代码,用STL中的ceil函数,可以多去看看
#include
using namespace std;
int n,a,b,c,ans=2100000000,x,i;
int main()
{
scanf("%d",&n);
for (;i<3;i++)
{
scanf("%d%d",&a,&b);
x=ceil(n*1.0/a)*b;
ans=min(x,ans);
}
printf("%d\n",ans);
return 0;
} */
10.ISBN号码
/*本题的思路就是先输入这个字符串,然后对第一个数字开始到识别码倒数第二个数字进行求和,求模
算出正确的识别码,再跟字符串中的识别码进行校对,不对则更新识别码,最后输出字符串或者Right
要注意字符与数字的转换,注意当识别码为10时要转换成X*/
#include
using namespace std;
int main()
{
char a[14],n;
int sum=0,j=1,i=0,code;
cin>>a;
for(i=0;i<11;i++)
{
if(a[i]!='-')
{
sum+=j*(a[i]-'0');
j++;
}
}
code=sum%11;
if(code==10)
n='X';
else
n=code+'0';
if(n==a[12])
cout<<"Right";
else
{
a[12]=n;
cout<<a;
}
return 0;
}
11.小玉家的电费
/*这道题根据不同电位价格来进行不同的计算,简单的数学问题
最后只要注意保留一位小数就可以了*/
#include
using namespace std;
int main()
{
int x;
double cost;
cin>>x;
if(x<=150)
cost=0.4463*x;
else if(151<=x&&x<=400)
cost=0.4463*150+0.4663*(x-150);
else
cost=0.4463*150+0.4663*250+0.5663*(x-400);
cout<<fixed<<setprecision(1)<<cost;
return 0;
}
12.小鱼的航程(改进版)
/*这道题注意数据太大溢出的情况就行
尽量不用循环,循环的时间可能会比较久*/
#include
using namespace std;
int main()
{
unsigned long long voyage;
int x,n;
cin>>x>>n;
/*先计算出扣掉x那一周的航程,该航程包括两部分,一部分是/7,还有%7的航程*/
voyage=(n-(8-x))/7*1250;
if((n-(8-x))%7==6)
voyage+=1250;
else if((n-(8-x))%7<6)
voyage+=(n-(8-x))%7*250;
/*再加上x那一周的航程就是总航程啦*/
if(x<=5)
voyage+=(6-x)*250;
cout<<voyage;
return 0;
}
13.三角函数
/*这题我的思路是将三个勾股数存入数组,然后对这三个数进行排序
再使用gcd函数对分子分母进行约分,使用gcd时要记得加上__不然系统会报错
最下面是gcd查找最大公约数的一个过程,比较简单,容易理解*/
#include
using namespace std;
int main()
{
int a[3],i;
for(i=0;i<3;i++)
cin>>a[i];
sort(a,a+3);
cout<<a[0]/__gcd(a[0],a[2])<<"/"<<a[2]/__gcd(a[0],a[2]);
return 0;
}
/*
long long gcd(long long,long long)
{
while(a!=b)
if(a>b)
a-=b;
else
b-=a;
return a;
}
*/
14.陶陶摘苹果
/*这道题挺简单的,只要用一个数组将10个苹果的高度储存一下,
用一个变量存储陶陶能够得着的高度,记得加上凳子的高度,
然后再逐一进行比较累加就行*/
#include
using namespace std;
int main()
{
int a[10],i,sum=0,h;
for(i=0;i<10;i++)
cin>>a[i];
cin>>h;
h+=30;
for(i=0;i<10;i++)
if(a[i]<=h)
sum++;
cout<<sum;
return 0;
}
15.三角形分类
/*根据三角形各自的条件进行判断即可,注意换行就行*/
#include
using namespace std;
int main()
{
int d[3],i;
for(i=0;i<3;i++)
cin>>d[i];
sort(d,d+3);
if(d[0]+d[1]<d[2])
{
cout<<"Not triangle";
return 0;
}
if(d[0]*d[0]+d[1]*d[1]==d[2]*d[2])
cout<<"Right triangle"<<endl;
else if(d[0]*d[0]+d[1]*d[1]>d[2]*d[2])
cout<<"Acute triangle"<<endl;
else
cout<<"Obtuse triangle"<<endl;
if(d[0]==d[1]||d[1]==d[2])
cout<<"Isosceles triangle"<<endl;
if(d[0]+d[1]==d[2]*2)
cout<<"Equilateral triangle"<<endl;
return 0;
}
16.ABC
/*对三个数字用sort进行排序,然后再存储输入的三个字母顺序
进行判断字符数组的字母,输出对应数字数组中的数字就行了*/
#include
using namespace std;
int main()
{
int i,num[3];
char str[3];
for(i=0;i<3;i++)
cin>>num[i];
sort(num,num+3);
for(i=0;i<3;i++)
cin>>str[i];
for(i=0;i<3;i++)
{
if(str[i]=='A')
cout<<num[0]<<" ";
else if(str[i]=='B')
cout<<num[1]<<" ";
else
cout<<num[2]<<" ";
}
return 0;
}