P4981 父子
题目背景
上演在各大学男生寝室的日常 :::
A:A :A: “我没带纸,快来厕所救我!”
B:B :B: “叫爸爸。”
A:A :A: “爸爸!”
....................................................................................................................................
A:A :A: “我没钱了,能借我点吗。”
B:B :B: “叫爸爸。”
A:A :A: “爸爸!”
一个月后、
B:B :B: “能把钱还给我吗。”
A:A :A: “叫爸爸。”
B:B :B: “爸爸!”
题目描述
对于全国各大大学的男生寝室,总是有各种混乱的父子关系。
那么假设现在我们一个男生寝室有不同的 nnn 个人,每个人都至多有一个“爸爸”,可以有多个“儿子”,且有且只有一个人没有“爸爸”(毕竟是室长,还是要给点面子,当然了,室长人人当嘛)。
那么现在问题来了,对于一个有 nnn 个人的寝室,最多可能存在多少种父子关系,当然每个人之间都必须要有直接或间接的父子关系。
输入格式
第一行一个非负整数 ttt,表示有 ttt 组数据。
接下来 ttt 行,每行一个整数 nnn,表示有 nnn 个人。
输出格式
共 ttt 行,每行一个整数,求关系个数。
由于答案可能较大,则我们需要输出答案对 109+910^9+9109+9 取模的值。
输入输出样例 #1
输入 #1
1
3
输出 #1
9
输入输出样例 #2
输入 #2
1
323
输出 #2
283888610
说明/提示
-
对于 10%10\%10% 的数据,保证 t=0t=0t=0;
-
另有 30%30\%30% 的数据,保证 n≤5n≤5n≤5;
-
对于 100%100\%100% 的数据,t≤104t≤10^4t≤104,1≤n≤1091\le n\le10^91≤n≤109。
C++实现
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL Mod=1e9+9;
LL power(LL n,LL m,LL p) {
LL ret=1;
while (m) {
if (m&1) ret=(ret*n)%Mod;
n=(n*n)%Mod;
m>>=1;
}
return ret;
}
int main() {
int cas; scanf("%d",&cas);
while(cas--) {
LL n;
scanf("%lld",&n);
printf("%lld\n",power(n,n-1,Mod));
}
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容
用C++实现信奥 P4981 父子&spm=1001.2101.3001.5002&articleId=148439048&d=1&t=3&u=1be01f0b2b5e4d96a1a0d901e0bb996d)
246

被折叠的 条评论
为什么被折叠?



