洛谷 P3795 钟氏映射
题目背景
2233年,CSSYZ学校的数学老师兼数学竞赛顾问钟JG已经2200+岁啦!
为了庆生,他或她给广大人民群众出了道题。
题目描述
设集合N=M={x∣x∈N+,x≤k,k∈N+}
设 ff 为 NN 到 MM 的映射。
求满足:
f[f(x)]=x 的不同的映射 ff 的个数,由于答案较大,输出答案对 14233333取余的数即可。
输入输出格式
输入格式:
输入一个正整数 kk
输出格式:
输出满足f[f(x)]=x 的不同的映射 ff 的个数对14233333 取余得到的数。
输入输出样例
说明
四个映射分别为:
f(1) | f(2) | f(3) |
---|---|---|
1 | 2 | 3 |
1 | 3 | 2 |
2 | 1 | 3 |
3 | 2 | 1 |
数据范围:
对于20%的数据,1≤k≤9
对于其它的80%的数据,1≤k≤107
内存20MB...(一开始开1MB把自己坑了)
代码:
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 #define LL long long 6 const int MAXN=5000+10; 7 const int MOD=14233333; 8 LL a,b,c,n; 9 int main() { 10 std::cin>>n; 11 a=1,b=2,c=4; 12 if(n>=3){ 13 for(int i=3;i<=n;i++){ 14 c=(b+(i-1)*a)%MOD; 15 std::swap(b,c); 16 std::swap(a,c); 17 } 18 std::cout<<b%MOD; 19 } 20 return 0; 21 }