PTA 求该月天数分数 java解法 分类平均 C语言 7-76 哪些门是开的 分数 10 作者 肖斌

作者 唐艳琴 单位 中国人民解放军陆军工程大学本题要求输入年份和月份,输出这该月的天数。输入格式:输入一行中两个整数,以空格隔开输出格式:输出该月的天数。

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);
        }
    }
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软工菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值