http://acm.timus.ru/problem.aspx?space=1&num=1083
题目
定义:如果k不整除n,有
n!!⋯!=n(n−k)(n−2k)⋯(nmodk)
;如果k整除n,有
n!!⋯!=n(n−k)(n−2k)⋯k
(n后面跟着k个叹号)。
比如,
3!=3×2×1;10!!!=10×7×4×1
。
给定整数n和k,计算对应的
n!!⋯!
的结果。
输入
一行一个整数 n(1≤n≤10) 和一个由 k(1≤k≤20) 个叹号组成的字符串。
输出
n!!⋯! (其中有 k 个叹号)的结果。
样例输入
9 !!
样例输出
945
题解
#include <cstdio>
#include <cstring>
int main() {
int n, k, ans, t, i;
char str[32];
scanf("%d %s", &n, str);
k = strlen(str);
t = n / k;
if (n % k == 0) --t;
for (i = 0, ans = 1; i <= t; ++i) {
ans *= n - i * k;
}
printf("%d\n", ans);
return 0;
}