题目描述
众所周知,黄黄同学早晨起来是要刷牙的。
黄黄同学有N支牙刷,又有N个牙刷套,开始的时候,一支牙刷对应放在一个牙刷套中。可是有一天,黄黄同学把所有牙刷套里的牙刷都拿出来,玩了一会儿,他又要把所有的牙刷都放回去。可是,他忽然一想,我可不可以使得没有任何一支牙刷放回它原来的牙刷套里面呢?
黄黄同学努力试了很久,却一直没有成功
#include<bits/stdc++.h> using namespace std; int n,f[100001]; int main() { scanf("%d",&n); f[1]=0,f[2]=1; for(int i=3;i<=n;i++) f[i]=(i-1)*(f[i-1]+f[i-2])%1206; if(n<2) printf("No Solution!\n"); else printf("%d\n",f[n]); return 0; }
过一次。于是他断定这个要求是无法达成的,你怎么认为的呢?
输入
输入文件put.in只包括一个整数N,表示牙刷和牙刷套的总数。
输出
输出文件put.out,如果存在满足要求的方法,输出放法方案总数L。因为方案总数可能比较大,所以你可以将答案Mod 1206后再输出。如果不存在满足要求的方法,则输出"No Solution!”
样例输入
3
样例输出
2
提示
对于40%的数据,保证N≤9
对于100%的数据,保证N≤100000
原文链接: https://www.cnblogs.com/LJA001162/p/13169969.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/357278
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!