8.2

发布时间 2023-08-02 22:57:58作者: new菜鸟
以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

输入格式:
输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

输出格式:
根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

输入样例1:
1988 4
输出样例1:
25 2013
输入样例2:
1 2
输出样例2:
0 0001
复制代码
复制代码
import java.util.Scanner;
public class Main{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int n=sc.nextInt();
        int age=0;
        for(int i=a;i<=3000;i++)
        {
            int flag[]=new int[10];
            int m=0;
            String x=String.format("%04d",i);//将年份转换为字符串的形式,数位不够前面补齐0
            for(int k=0;k<x.length();k++)
            {
                int c=x.charAt(k)-'0';
                flag[c]=1;//标记这个位置的数是不是第一次出现
            }
            for(int j=0;j<10;j++)
            {
                if(flag[j]!=0)
                {
                    m++;
                }
            }
            if(m==n)
            {
                System.out.printf("%d %04d\n",age,i);
                break;
            }
            age++;
        }
    }
}
复制代码
复制代码
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。

输入格式:
输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F 
1
​
 ⋯F 
K
​
 ”,其中1≤K≤10,F 
i
​
 (i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。

输出格式:
统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。

输入样例:
4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123
输出样例:
233 3
复制代码
复制代码
import java.util.Scanner;
public class Main
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] gr=new int[1001];
        for(int i=0;i<n;i++)
        {
            int m=sc.nextInt();
            for(int j=0;j<m;j++)
            {
                int x=sc.nextInt();
                gr[x]++;
            }
        }
        int w=0;
        for(int i=1;i<1001;i++)
        {
            if(gr[w]<=gr[i])
            {
                w=i;
            }
        }
        System.out.println(w+" "+gr[w]);
    }
}
/*
注意,java的执行效率相比其他语言是非常低的
所以这题用Java来写的话会有一个测试点会超时
所以Java是过不了的