【AKOJ】1198-排排队
2016-05-02 19:35
183 查看
排排队
Time Limit:1000MS Memory Limit:65536K
Total Submit:31 Accepted:29
原题链接
Description
有一列人,按1到n的顺序对这n个人进行编号。现在这n个人开始排队,有一个排队规则
就是编号为i的人不能站在第i位上,问:n个人进行排队,有多少种可能的排队方法?
Input
包括多组测试数据,每组测试数据包含一个整数n,代表一共有n个人进行排队
Output
包括一个整数,代表多少种可能的排队方法。
Sample Input
Sample Output
Source
#include<stdio.h>
#include<math.h>
int fa(int n) //自定义factorial函数
{
int f=1;
while(n)
{
f*=n--;
}
return f;
}
int main()
{
int n,i,d=0;
while(scanf("%d",&n)!=EOF) //因为输入多组数据 ,注意这里的控制
{
d=0;
if(n==1){d=0;}
else
{
for(i=2;i<=n;i++)
{
d+=fa(n)*pow(-1,i)/fa(i);//靠着高中的记忆,隐约记着这个公式.d=n!(1/2!-1/3!+...(-1)^n/n!)
}
}
printf("%d\n",d);
}
return 0;
}
Time Limit:1000MS Memory Limit:65536K
Total Submit:31 Accepted:29
原题链接
Description
有一列人,按1到n的顺序对这n个人进行编号。现在这n个人开始排队,有一个排队规则
就是编号为i的人不能站在第i位上,问:n个人进行排队,有多少种可能的排队方法?
Input
包括多组测试数据,每组测试数据包含一个整数n,代表一共有n个人进行排队
Output
包括一个整数,代表多少种可能的排队方法。
Sample Input
3 4 6
Sample Output
2 9 265
Source
#include<stdio.h>
#include<math.h>
int fa(int n) //自定义factorial函数
{
int f=1;
while(n)
{
f*=n--;
}
return f;
}
int main()
{
int n,i,d=0;
while(scanf("%d",&n)!=EOF) //因为输入多组数据 ,注意这里的控制
{
d=0;
if(n==1){d=0;}
else
{
for(i=2;i<=n;i++)
{
d+=fa(n)*pow(-1,i)/fa(i);//靠着高中的记忆,隐约记着这个公式.d=n!(1/2!-1/3!+...(-1)^n/n!)
}
}
printf("%d\n",d);
}
return 0;
}
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置