📄 1408.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1408 on 2005-03-23 at 23:44:10 */
#include <stdio.h>
#include <math.h>
int combinat(int, int);
int gbc(int, int);
int main()
{
int n, total, num[50], comfac;
int i, j;
double pi;
while(scanf("%d", &n) == 1){
if(n == 0){
return 0;
}else{
total = combinat(n, 2);
comfac = 0;
for(i = 0; i < n; i++){
scanf("%d", &num[i]);
}
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(j <= i){
continue;
}else{
if(gbc(num[i], num[j]) == 1){
comfac++;
}
}
}
}
if(comfac == 0){
printf("No estimate for this data set.\n");
}else{
pi = sqrt(6 * (double)total / comfac);
printf("%.6lf\n", pi);
}
}
}
return 0;
}
int combinat(int m, int n)
{
int i, j;
int mat[100][100];
if(n == 0 || m == n){
return 1;
}else{
for(j = 0; j < n; j++){
mat[0][j] = 1;
for(i = 1; i <= m-n; i++){
if(j == 0){
mat[i][j] = i+1;
}else{
mat[i][j] = mat[i-1][j] + mat[i][j-1];
}
}
}
return (mat[m-n][n-1]);
}
}
int gbc(int a, int b)
{
if((a == 1) || (b == 1)){
return 1;
}else if((a % b == 0) || (b % a == 0)){
return 0;
}else{
if(a > b){
return (gbc((a%b), b));
}else{
return (gbc(a, (b%a)));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -