#4300. 「2023.09 三级」谁是你的潜在朋友
题目描述
“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。 首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。
输入格式
第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)
输出格式
包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)
样例
样例输入
4 5 2 3 2 1样例输出
1 BeiJu 1 BeiJu
#include<iostream> #include<iomanip> using namespace std; int a[210]; int cnt[210]; int n,m; int main() { cin>>n>>m; for(int i = 0;i<n;i++) { cin>>a[i]; cnt[a[i]]++; } for(int i = 0;i<n;i++) { if(cnt[a[i]]>1) { cout<<cnt[a[i]]-1<<endl; } else { cout<<"BeiJu"<<endl; } } return 0; }#4173. 课程冲突
题目描述
小 A 修了 n 门课程, 第 i 门课程是从第 ai 天一直上到第 bi 天。
定义两门课程的冲突程度为 : 有几天是这两门课程都要上的。
例如 a1=1,b1=3,a2=2,b2=4 时, 这两门课的冲突程度为 2。
现在你需要求的是这 n 门课中冲突程度最大的两门课的冲突程度。
输入格式
第一行一个正整数 n 表示课程数量。 接下来 n 行,每行两个正整数 ai,bi。 2 ≤ n≤ 1000, 1 ≤ ai ≤ bi ≤ 1000。
输出格式
输出一个整数表示最大的冲突程度。
样例
样例输入
3 1 3 2 4 5 5样例输出
2
#include<iostream> #include<iomanip> using namespace std; struct couers { int sT; int eT; }; couers a[1010]; int n; int ma = -1; int main() { cin>>n; for(int i = 0;i<n;i++) { cin>>a[i].sT>>a[i].eT; } for(int i = 0;i<n-1;i++) { for(int j = 0;j<n-1-i;j++) { if(a[j].sT>a[j+1].sT) { swap(a[j],a[j+1]); } } } for(int i = 0;i<n;i++) { for(int j = i+1;j<n;j++) { if(a[i].eT>=a[j].sT) { int ct = min(a[i].eT,a[j].eT) - max(a[i].sT,a[j].sT) + 1; ma = max(ma,ct); } } } cout<<ma; return 0; }#5064. 踩方格
题目描述
有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设:
a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;
b、走过的格子立即塌陷无法再走第二次;
c、只能向北、东、西三个方向走;
请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。
输入格式
允许在方格上行走的步数n(n≤20)。
输出格式
计算出的方案数量。
样例
样例输入
2样例输出
7
#include<iostream> #include<iomanip> using namespace std; int main() { int a[50]; int n; cin>>n; a[1] = 3; a[2] = 7; for(int i = 3;i<=n;i++) { a[i] = a[i-1]*2 + a[i-2]; } cout<<a[n]; return 0; }#4229. 「2022.06三级」迷信的病人
题目描述
医院为了方便对患者进行建档和管理,引入了9位整数ID号来标识每个病人。
最近医院入住了一个迷信的病人,他认为ID号的好坏直接决定了自己的命运。
他对ID号x有如下要求:
(1)x的前三位数构成的整数是素数
(2)x的后三位数构成的整数是平方数(所谓平方数,是指它是某一个正整数的平方,e.g. 1,4,9,16...)
(3)x中不包含"13"为了避免不必要的医患矛盾,医院须尽量满足他的需求。
现给定正整数区间[m,n],请你判断存在几个满足病人需求的ID号。
输入格式
两个正整数m,n,以空格隔开。(999999999>=n>=m>=111111111)
输出格式
一个整数(满足要求的ID的个数)。
样例
样例输入
157689476 157689687样例输出
5样例解释
存在5个满足要求的ID:157689484,157689529,157689576,157689625,157689676
#include<iostream> #include<iomanip> #include<cmath> using namespace std; int a[1005]; int n, m; int sum = 0; int main() { cin>>m>>n; for(int i = 2;i * i <= 999;i++) { if(a[i] == 1) { continue; } for(int j = i * i; j <= 999; j += i) { a[i] = 1; } } for(int i = m;i<=n;i++) { if (a[i / 1000000] == 1) { continue; } int w = i % 1000; int g = sqrt(w); if (g * g != w) { continue; } bool flag = 1; for(int j = 1;j<=10000000;j*=10) { if(i / j % 100 == 13) { flag = 0; break; } } if(flag == 1) { sum++; } } cout<<sum; return 0; }#1014. Pell数列(t2.cpp 难度⭐⭐)
题目描述
Pell 数列的定义是这样的:,,给出一个正整数,求 Pell 数列的第 项模上是多少。。
输入格式
第
行是测试数据的组数 ,后面跟着 行输入。每组测试数据占 行,包括一个正整数。
输出格式
行,每行输出对应一个输入。输出应是一个非负整数。
样例
输入样例
2 1 8输出样例
1 408
#include<iostream> #include<iomanip> using namespace std; int a[1000010]; int main() { a[1] = 1; a[2] = 2; for(int i = 3;i<=1000000;i++) { a[i] = (2*a[i-1] + a[i-2])%32767; } int n; cin>>n; for(int i = 0;i<n;i++) { int k; cin>>k; cout<<a[k]<<endl; } return 0; }