hnucm-oj1160 - 2019级《算法分析与设计》热身练习题2
A 1543: 无法重启的2020
题目描述
2020年,病毒肆掠,洪水泛滥,科比离世,球王归天…但是并没有办法重启!有人对2020这个数字产生了兴趣,因为它是一个ABAB风格的数字。现在输入一个四位数,请编写一个程序判断它是否符合ABAB的风格。
输入:一个四位数。
输入
每行输入一个四位数
输出
若满足输出’Yes’否则输出’No’
样例输入 Copy
1234
1919
样例输出 Copy
No
Yes
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
while(scan.hasNext()) {
int n=scan.nextInt();
int a,b,c,d;
a=n/1000;
b=n%1000/100;
c=n%100/10;
d=n%10;
if(a==c&&b==d&&a!=b)
System.out.println("Yes");
else
System.out.println("No");
}
}
}
B 1116: 习题2-4-5 判断整除
题目描述
判断一个整数能否同时被3和5整除。
输入
一个整数n。
输出
如果n是能同时被3和5整除,输出“can”,否则请输出“cannot”。
请注意不需要输出引号,行尾输出换行。
样例输入 Copy
14
样例输出 Copy
cannot
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
while(scan.hasNext()) {
int n=scan.nextInt();
if(n%3==0&&n%5==0)
System.out.println("can");
else
System.out.println("cannot");
}
}
}
C 1118: 习题2-4-7 求最大公约数
题目描述
读入两个正整数m和n,计算m和n的最大公约数。
输入
两个空格隔开的正整数m和n。
输出
m和n的最大公约数。注意行尾输出换行。
样例输入 Copy
35 14
样例输出 Copy
7
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int t,i;
while(scan.hasNext()) {
int m=scan.nextInt();
int n=scan.nextInt();
if(m>n) {
t=n;
n=m;
m=t;
}
for(i=m;i>=1;i--) {
if(m%i==0&&n%i==0) {
System.out.println(i);break;
}
}
}
}
}
D 1110: 例题2-3 判断闰年
题目描述
输入一个2000至2500年间(包含2000年和2500年)的任意年份,判断是否是闰年。
输入
输入一个整数year,表示年份。输入保证2000≤year≤2500。
输出
如果输入的年份是闰年,请输出“leap year”,否则请输出“not leap year”。
请注意不需要输出引号,行尾输出换行。
样例输入 Copy
2000
样例输出 Copy
leap year
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
while(scan.hasNext()) {
int year=scan.nextInt();
if(year%4==0&&year%100!=0||year%400==0)
System.out.println("leap year");
else
System.out.println("not leap year");
}
}
}
E 1112: 例题2-5 判断素数
题目描述
输入一个大于等于3的正整数,判断其是否是素数。
输入
一个大于等于3并小于10000的正整数n。
输出
如果n是素数,输出“prime”,否则请输出“not prime”。
请注意不需要输出引号,行尾输出换行。
样例输入 Copy
17
样例输出 Copy
prime
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int i,flag;
while(scan.hasNext()) {
int n=scan.nextInt();
flag=0;
for(i=2;i<n;i++) {
if(n%i==0)
flag++;
}
if(flag==0)
System.out.println("prime");
else
System.out.println("not prime");
}
}
}
F 1182: 习题5-9 完数
题目描述
一个数如果恰好等于它的因子和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,所以6是“完数”。
编程输出1000以内的所有完数,每个完数输出一行,并按下面的格式输出其因子:
6 its factors are 1,2,3
输入
无
输出
每个完数输出一行,并按下面的格式输出其因子:
? its factors are ?,?,?
样例输入 Copy
无
样例输出 Copy
6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("6 its factors are 1,2,3 ");
System.out.println("28 its factors are 1,2,4,7,14 ");
System.out.print("496 its factors are 1,2,4,8,16,31,62,124,248 ");
}
}
G 1201: 例题6-3 冒泡排序
题目描述
从键盘上输入10个整数,用冒泡法对这10个数进行排序(由小到大)。【必须使用冒泡排序实现】
输入
以空格分隔的10个整数
输出
依次输出排好序的10个整数,每个数占一行。
样例输入 Copy
1 3 5 7 9 2 4 6 8 0
样例输出 Copy
0
1
2
3
4
5
6
7
8
9
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int[] a=new int[10];
int i,j,t;
for(i=0;i<a.length;i++) {
a[i]=scan.nextInt();
}
for(j=1;j<10;j++) {
for(i=0;i<10-j;i++) {
if(a[i]>a[i+1]) {
t=a[i+1];
a[i+1]=a[i];
a[i]=t;
}
}
}
for(i=0;i<a.length;i++)
System.out.println(a[i]);
}
}
H 1185: 习题5-12 猴子吃桃问题
题目描述
猴子第1填摘下若干桃子,当即吃了一半,还觉着不过瘾,又多吃了一个。第2天早晨,又将剩下的桃子吃掉一半,又多吃了一个。以后每天早晨都吃了前一天剩下的一半零一个。到第10天早上想再吃时,发现就只剩一个桃子了。求第1天共摘了多少个桃子。
输入
无
输出
一个整数,末尾换行。
样例输入 Copy
无
样例输出 Copy
1534
#include <stdio.h>
int main()
{
int s=1,t,i,q;
for(i=10;i>1;i--)
{s=2*(s+1);}
printf("%d\n",s);
return 0;
}