作者 唐艳琴 单位 中国人民解放军陆军工程大学本题要求输入年份和月份,输出这该月的天数。输入格式:输入一行中两个整数,以空格隔开输出格式:输出该月的天数。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Main {
public static int getDaysOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int m, y;
Scanner sc = new Scanner(System.in);
y = sc.nextInt();m = sc.nextInt();
if (m > 12) {
System.out.println("ERROR");
return;
}
String s = y + "-";
if (m < 10)
s = s + "0" + m + "-1";
else
s = s + +m + "-1";
System.out.println(getDaysOfMonth(sdf.parse(s)));
}
}
PTA 7-5 分类平均 C语言
分数 10
作者 钟学燕
单位 西南石油大学
给定 n 和 k,将从 1 到 n之间的所有正整数可以分为两类:A 类数可以被 k整除(也就是说是 k的倍数),而 B 类数不能。请输出这两类数的平均数,精确到小数点后 1 位,用空格隔开。(数据保证两类数的个数都不会是0)
输入格式:
输入两个正整数n和k(1≤n≤10000,1≤k≤100)
输出格式:
输出一行,两个实数,分别表示 A 类数与 B 类数的平均数。(精确到小数点后一位)
可能 细节之处在于 没算 B组的次数 直接 (n-j);
#include <stdio.h>
int main(){
int n,k;
scanf("%d %d",&n,&k);
int c,j,s;
c=s=j=0;
for(int i=1;i<=n;i++)
{
if(i%k==0){
s+=i;
c++;
}
else
j+=i;
}
double ss=0.0,jj=0.0;
ss=s/c;
jj=j*1.0/(n-c);
printf("%.1f %.1f",ss,jj);
return 0;
}
7-76 哪些门是开的 分数 10 作者 肖斌 单位 西南石油大学
宾馆有n个房间,从1到n编号,第一个服务员把所有的房间门打开,第2个服务员把编号为2的倍数的房间做相反处理,第三个服务员把编号为3的倍数的房间做相反处理,以后继续这种操作,当第n个服务员操作后,哪些门是开的?
输入格式:
输入房间n。房间不超过100个
输出格式:
输出房间编号,每个房间号占5个位置,按右对齐方式输出
输入样例:
在这里给出一组输入。例如:
60
输出样例:
在这里给出相应的输出。例如:
1 4 9 16 25 36 49
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
可以把本题看做求奇数因子个数的数,感觉是看算法课学会的!记录一下
#include<stdio.h>
int yinzi(int n){//求因子个数
int res = 1;//1为所有的因子
for(int i = 2; i <= n ;i++){
if(n % i == 0){
res ++;
}
}
return res;
}
int main(){
int n;
scanf("%d",&n);
for(int i = 1 ; i <= n;i ++){
if(yinzi(i) % 2 != 0){//奇数个因子
printf("%5d",i);
}
}
}