猜数游戏(1)
猜数游戏
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
Alice 和 Bob 正在玩一个猜数游戏,游戏规则如下。
有且仅有一个未知的整数需要Alice去猜测,Bob事先已经知道了这个数。
在游戏中 Bob 总共提供给 Alice n 条线索,而Alice只有一次猜测机会。
每条线索由 L 和 R 两个整数组成,表示要猜测的数大于等于L,并且小于等于R。
Alice是足够聪明的,不过她希望你能告诉她,一次猜对的概率是多少。
(数据保证Bob给Alice提供的线索均是正确的)
Input
第一行输入一个正整数 T 表示数据的组数。(1 <= T <= 100)
每组开始输入一个正整数 n。(1 <= n <= 100)
接下来 n 行,每行输入两个整数 L 和 R。 (-100 <= L <= R <= 100)
Output
输出共T行,第 i 行表示第 i 组测试数据的答案。
答案用分数的形式(A/B)进行表示,注意不要输出多余的空格。
Sample Input
3
1
-100 100
2
3 4
4 5
2
3 6
4 7
Sample Output
1/201
1/1
1/3
Hint
Source
lxw
题目提交链接
方法一:
#include<stdio.h>
#include<stdlib.h>
int n=0;
int minnum(int a[]);
int maxnum(int a[]);
int main()
{
int T,d1[1000],d2[1000];
scanf("%d",&T);
for(int j=0; j<T; j++)
{
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%d",&d1[i]);
scanf("%d",&d2[i]);
}
printf("1/%d\n",(minnum(d2)-maxnum(d1)+1));
}
return 0;
}
int minnum(int a[])
{
int min=a[0],k=0;
for(int i=1; i<n; i++)
{
if(a[i]<min)
min =a[i];
}
return min;
}
int maxnum(int a[])
{
int max=a[0],k=0;
for(int i=1; i<n; i++)
{
if(a[i]>max)
max =a[i];
}
return max;
}
方法二:利用三维数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num[100][100][2],result[100];
int max,min,firstfind=0;
int i,j,k,n,m;
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%d",&m);
firstfind=0;
for(j=0; j<m; j++)
{
scanf("%d %d",&num[i][j][0],&num[i][j][1]);
if(firstfind==0)
{
min=num[i][j][0];
max=num[i][j][1];
}
if(min<num[i][j][0])
{
min=num[i][j][0];
}
if(max>num[i][j][1])
{
max=num[i][j][1];
}
firstfind=1;
}
result[i]=max-min+1;
}
for(i=0; i<n; i++)
{
printf("1/%d\n",result[i]);
}
return 0;
}
补充知识:
//三维数组的初始化
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[3][2][4] =
{
{
{1,1,2,1}, {1,1,5,1}
},
{
{1,1,3,1}, {1,1,6,1}
},
{
{1,1,4,1}, {1,1,7,1}
}
};
printf("%d ",a[0][1][2]);//a[0][1][2] = 5;
return 0;
}
//1. 用魔方理解,z 就相当于深度或者层数
//2. 树的概念理解
还没有评论,来说两句吧...