键盘输入一个正整型N(5≤N≤15),先求1到N中奇数的阶乘值,然后按下式求S的值
键盘输入一个正整型N(5≤N≤15),先求1到N中奇数的阶乘值,然后按下式求S的值.
如:输入N=5,则求S=1!-3!+5!;如:输入N=14,则求S=1!-3!+5!-7!+9!-11!+13!。用c++解可以吗?
Pascal附上
program steps;var i,n:integer;s:int64;function step(a:integer):int64;var i:integer;beginstep:=1;for i:=1 to a do step:=step*i;end;function power(a,b:integer):longint;var i:integer;beginpower:=1;for i:=1 to b do power:=power*a;end;beginreadln(n);if (n<5) or (n>15) then halt;s:=0;for i:=1 to (n+1) div 2 dos:=s+power(-1,i+1)*step(2*i-1);write(s);readln;end.
采用循环累加求值就可以了(减一个数等于加它的负数):
#include <iostream>
int main()
{
long long num, sum = 0;
bool sub = true;
std::cin >> num;
for (int i = 1; i <= num; i += 2)
{
long long n = 1;
for (int j = 1; j <= i; n *= j++);
sum += (sub = !sub) ? -n : n;
}
return (std::cout << sum), 0;
}
这种情况可以使用直接的写法
下一篇:电脑自动关机
热门标签: