一個理想隨機數發生器R,給定參數正整數x,它可以均勻隨機產生一個閉區間[0,x]之間的實數(注意是實數,每個實數出現的概率相同)R(x)。現在給定3個正整數a,b,c,我們使用a,b產生兩個隨機實數R(a), R(b),問R(a) + R(b) <= c的概率有多大? 輸入: 正整數a,b,c。正整數均不超過10000 輸出: R(a) + R(b) <= c的概率。注意輸出是一個有理數(分數),請化為最簡分數。(分子分母的最大公約數是1)。 例如 輸入a = 1, b = 1, c = 4,輸出"1/1"
#include
#include
#include
#define random(x) (rand()%x)
void main()
{
int i,j;
int z=0;
int s,t;
int a,b,c;
int m,l;
int r,m1,z1;
printf("請輸入C:");
scanf("%d",&c);
printf("請輸入A,B:\n");
scanf("%d,%d",&a,&b);
srand((int)time(0));
s= random((a)%(a+1));
t= random((b)%(b+1));
l=s+t;
m=a*b;
if(l
printf("1/1");}
// printf("%d\n",s);
// printf("%d\n",t);
// printf("%d\n",l);
else
{
for(i=0;i<=a;i++){
for(j=0;j<=b;j++)
{
if(i+j
z+=1;
}
}
m1=m;
z1=z;
// printf("%d/%d\n",z,m);
}
while(r!=0)
{
r=m1%z1;
m1=z1;
z1=r;
}
printf("%d/%d\n",z/m1,m/m1);
}
C語言程序算法 (共2篇) 下一篇:PV操作,售票員與...