牛客IOI周赛16-普及组-求导
求导
http://www.nowcoder.com/questionTerminal/7adb246544fb44f09e8758fc0566d54a
关于这道题目,我们可以分三种情况讨论:
当n
处于第一种情况时,我们直接输出0就可以了(似乎题目没有给出n是否小于等于0的限制)。
当n
处于处于第二种情况时,1 - 1 = 0
,我们直接输出1
就可以了。
当n
处于第三种情况时,我们就要进行推导了,这玩意其实就是个阶乘
只要n
大于等于2,从2
开始求导一直求导到n
,求导n-1
次,那么最后一次求导所乘的都是2
。
所以代码很容易就能写出来啦。
#include <iostream> #include <cstdio> using namespace std; const long long mod = 1000000007; int main(){ long long n; cin >> n; if(n <= 0) cout << 0 << endl; if(n == 1) cout << 1 << endl; long long sum = 1; for(int i = 2; i <= n; i++){ sum = (sum % mod * i) % mod; } cout << sum % mod << endl; return 0; }