找最小值
【问题描述】有一个包含任意n个整数的序列,请找出最小值并打印。
【输入形式】第一行输入n,第二行输入n个整数,用空格隔开。
【输出形式】输出最小数的值。
【样例输入】
10
34 91 83 0 29 93 57 -12999 88 72
【样例输出】
-12999
【样例说明】这10个整数中最小值为-12999。
【评测用例规模与约定】n的取值范围为[1,100]。序列中每个整数的取值范围[-100000 , 100000],且保证这n个整数各不相同。
#include <iostream>
using namespace std;
int main()
{
int a[100];
int n,i;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
}
int min=a[0];
for(i=0;i<n;i++)
{
if(a[i]<min)
min=a[i];
}
cout<<min;
return 0;
}
十进制转二进制
【问题描述】对任意一个十进制正整数,将其转换为二进制的形式
【输入形式】一个int型正整数
【输出形式】该输入的二进制形式
【样例输入】
100
【样例输出】
1100100
【样例说明】十进制数100的二进制形式是1100100
【评分标准】正确输出
#include <iostream>
using namespace std;
int main()
{
int a,b;
int i=1,j=0;
cin>>a;
while(a!=0)
{
b=a%2;
a=a/2;
j=j+i*b;
i=i*10;
}
cout<<j<<endl;
return 0;
}
敲7
【问题描述】输出指定范围内包含7的数字和7的倍数
【输入形式】一个int型正整数
【输出形式】从0到该输入整数范围以内所有包含7的数字和7的倍数,每个输出以换行隔开
【样例输入】
20
【样例输出】
7
14
17
【样例说明】0到20以内包含7的数字和7的倍数有7、14、17
【评分标准】正确输出
#include <iostream>
using namespace std;
int main()
{
int n,i=1,j;
cin>>n;
while(i<=n)
{
if(i%7==0) {
cout<<i<<endl;
}
else {
j=i;
while(j<=n)
{
if(j%10==7) {
cout<<i<<endl;
break;
}
j=j/10;
if(j==0)
break;
}
}
i++;
}
return 0;
}
打印一个金字塔
【问题描述】打印一个由"“组成的金字塔,每一行比上一行多一个”"。由键盘输入数字决定金字塔的高度,但是金字塔高度至少为1。
【输入形式】一个int型的自然数n
【输出形式】当n大于等于1时,输出一个n行的"“金字塔;当n小于1时输出一个一行的”"金字塔
【样例输入】
10
【样例输出】
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
【样例说明】金字塔有10行,每一行比上一行多一个"“,”“和”*"之间有一个空格作为间隔。
【评分标准】输出正确
#include <stdio.h>
int main()
{
int n,i,j;
scanf("%d",&n);
if(n>=1){
for(i=1; i<=n; i++)
{
for(j=1; j<=n-i; j++)
putchar(' ');
for(j=1; j<=i; j++)
{
printf(" *");
}
putchar('\n');
}
}
else
{
printf("*");
}
return 0;
}
求一个数的位数
【问题描述】求一个数的位数
【输入形式】一个int型的正整数
【输出形式】该输入正整数的位数或长度
【样例输入】
100
【样例输出】
3
【样例说明】100的位数是3
【评分标准】正确输出
#include <iostream>
using namespace std;
int main()
{
int n,a=0;
cin>>n;
if(n==0)
{
cout<<'1'<<endl;
}
else
{
while(n>0)
{
n=n/10;
a++;
}
cout<<a<<endl;
}
return 0;
}
湖南省阶梯电费
【问题描述】输入月份和用电量,计算出电费。
湖南省全省居民生活用电试行阶梯电价。居民阶梯电价试行范围为全省由供电企业(含地方供电企业)实行“一户一表”抄表结算到户的城乡居民用电户。
湖南省分档电量:
第一档电量,不分季节,为每户每月180千瓦时及以内的用电量。
第二、三档用电量分季节。3、4、5、9、10、11月为春秋季,二档电量为超过180千瓦时—350千瓦时,三档电量为350千瓦时以上;
1、2、6、7、8、12月为冬夏季,二档电量为超过180千瓦时—450千瓦时,三档电量为450千瓦时以上。
湖南阶梯电价:
第一档电量以内,基准电价仍按价格主管部门批复的现行居民生活用电价格标准执行,不作调整(其中省电网居民用户现行基准电价为0.588元/千瓦时);
第二档电量区间,在基准电价的基础上,每千瓦时加价0.05元;
第三档电量,在基准电价的基础上,每千瓦时加价0.30元。
湖南阶梯电价计算方法:
一档用电量180×一档价0.588+二档用电量×二档价0.638+三档用电量×三档价0.888
【输入形式】输入两个int型数字,分别代表月份和用电量(千瓦),用空格隔开
【输出形式】输出电费(元)
【样例输入】
1 180
【样例输出】
105.84
【样例说明】输入表示1月份的用电量为180千瓦,180千瓦是1档,电费为180×0.588=105.84(元)
【评分标准】输出正确
#include <iostream>
using namespace std;
int main()
{
double n,m,x;
cin>>m>>n;
if((n<=180)&&(m>=1)&&(m<=12))
{
x=0.588*n;
cout<<x<<endl;
}
else if((n>180)&&(n<=350)&&((m==3)||(m==4)||(m==5)||(m==9)||(m==10)||(m=11)))
{
x=0.588*180+0.638*(n-180);
cout<<x<<endl;
}
else if((n>350)&&((m==3)||(m==4)||(m==5)||(m==9)||(m==10)||(m=11)))
{
x=0.588*180+0.638*170+0.888*(n-350);
cout<<x<<endl;
}
else if((n>180)&&(n<=450)||((m==1)||(m==2)||(m==6)||(m==7)||(m==8)||(m=12)))
{
x=0.588*180+0.638*(n-180);
cout<<x<<endl;
}
else if((n>450)||((m==1)||(m==2)||(m==6)||(m==7)||(m==8)||(m=12)))
{
x=0.588*180+0.638*270+0.888*(n-450);
cout<<x<<endl;
}
return 0;
}
ch4-3 判断“水仙花数”
【问题描述】
所谓“水仙花数”,是指一个三位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为 153=13+53+3^3。现在给定一个数字,判断是否是水仙花数。
【输入形式】
输入一个整数n。
【输出形式】
输出“Yes”表示水仙花数,输出“No”表示不是水仙花数
【样例输入】
153
【样例输出】
Yes
【样例说明】
153=13+53+3^3
【评分标准】
评测用例规模与约定
所有评测用例满足:0 ≤ n ≤ 1000000000。
#include <iostream>
using namespace std;
int main()
{
int n,a,b,c;
cin>>n;
a=n/100;//百位数
b=(n-a*100)/10;//十位数
c=n%10;//个位数
if(n==a*a*a+b*b*b+c*c*c)
{
cout<<"Yes"<<endl;
}
if(n!=a*a*a+b*b*b+c*c*c)
{
cout<<"No"<<endl;
}
return 0;
}
数字魔术
【问题描述】请编程实现数字魔术——给定M值,推测符合以下计算规则的三位数X。假定该三位数为X(abc),M = acb + bac + bca + cab + cba。
【输入形式】输入一行,包含整数m。
【输出形式】输出一行,包含整数X。
【样例输入】
1209
【样例输出】
123
【样例说明】
132+213+231+312+321=1209,所以在该计算规则下,1209对应的三位数为123。
【用例规模】
确保X是一个三位数,且每个用例都能得出解决方案。
#include <stdio.h>
using namespace std;
int T( int a, int b, int c )
{
return a*100+b*10+c;
}
int main()
{
int m ,X, a, b, c, s;
cin>>m;
for(X=999;X>99;X--)
{
a=X/100; b=X/10%10; c=X%10;
s = T(a,c,b)+T(b,a,c)+T(b,c,a)+T(c,a,b)+T(c,b,a);
if(s==m) break;
}
if(X > 99)
cout<<X;
return 0;
}
比n大的第一个素数
【问题描述】从键盘输入一个正整数N,输出比N大的第一个素数。素数定义:只能被自己和1整除的自然数。(1≤N≤1000000000)
【输入形式】一个正整数N
【输出形式】一个正整数,比N大的第一个素数。
【样例输入】
31
【样例输出】
37
【样例说明】比31大的第一个素数是37
【样例输入】
113092
【样例输出】
113093
【样例说明】比113092大的第一个素数是113093
【辅助提示】计算平方根的库函数为sqrt(x),其函数原型声明在头文件中。
#include<iostream>
#include<cmath>
using namespace std;
int pd(int y)
{
if(y<=1)
{
return 0;
}
for(int i=2;i<=sqrt(y);i++)
{
if(y%i==0)
return 0;
}
return 1;
}
int main()
{
int N;
cin>>N;
for(int i=N+1; ;i++)
{
if(pd(i))
{
cout<<i<<endl;
break;
}
}
return 0;
}