7-15 出生年
以上是新浪微博中一奇葩贴:“我出生于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
#include <stdio.h>
int main()
{
int a[4];
int k=1,i,j,n,y;
scanf("%d%d",&y,&n);
for(i=y;i<3012;i++)
{
k=1;
a[0]=i/1000;
a[1]=i/100%10;
a[2]=i/10%10;
a[3]=i%10;
if(a[0]!=a[1]&&a[0]!=a[2]&&a[3]!=a[0])
k++;
if(a[1]!=a[2]&&a[1]!=a[3])
k++;
if(a[2]!=a[3])
k++;
if(k==n)
break;
}
printf("%d %04d",i-y,i);
return 0;
}
7-16 点赞
微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。
输入格式:
输入在第一行给出一个正整数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
#include <stdio.h>
int main()
{
int N,i,j;
int n,k;
int a[10],count[1001]={0},max;
scanf("%d\n",&N);
for(i=0;i<N;i++)
{
scanf("%d",&n);
for(j=0;j<n;j++)
{
scanf("%d",&a[j]);
count[a[j]]++;
}
}
max=0;
for(i=0;i<1001;i++)
if(count[max]<=count[i])//这个等号无敌直接将最大的次数最多的找出来了!!
{
max=i;
k=count[max];
}
printf("%d %d",max,k);
}
L1-016 查验身份证 (15 分)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
输入格式:
输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。
输出格式:
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。
输入样例1:
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
输出样例1:
12010X198901011234
110108196711301866
37070419881216001X
输入样例2:
2
320124198808240056
110108196711301862
输出样例2:
All passed
#include <iostream>
#include <string>
using namespace std;
int main()
{
int power[20] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
string check = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
string str;
int N,i,j,flag=1;
cin >> N;
for (i = 0; i < N; i++)
{
cin >> str;
int sum = 0, sign = 1;
for (j = 0; j < 17; j++) {
if (str[j] >= '0'&&str[j] <= '9')
{
sum += (str[j] - '0')*j;
}
else
{
cout << str << endl;
sign = 0;
flag = 0;
break;
}
}
if (str[17] != check[sum % 10]||sign)
{
cout << str << endl;
flag = 0;
}
if (flag)
cout << "All passed";
}
return 0;
}
非常开心的一天。结识了很多大神,加油加油自律起来。