SPOJ BALLSUM - Ball sum(规律)

该博客介绍了SPOJ上的BALLSUM问题,要求计算从1到N的不重复数字中随机取出两个球,其和不超过K的概率。通过分析不同测试案例,博主发现了概率计算的规律,并提供了相应的公式。解决方案不依赖于模拟,而是利用发现的数学模式进行计算。

题目链接:http://www.spoj.com/problems/BALLSUM/en/


BALLSUM - Ball sum


You have a bag filled with N balls.Each Ball has a distinct number from 1 to N printed on it.All the numbers are distinct. You withdraw two balls from the bag and take their sum. You need to calculate the probability that the sum is not greater than the given number K(<=N). The Answer should be displayed in the form of p/q.(except when the answer is 0 or 1)

Input

Input consists of various test cases. Each test case consist of two integer inputs,N and K. (0<=K<=N<=1000000000) The program stops taking input when N and K equals -1

Output

Output the result in the form of p/q.(Except when the answer is 0 or 1)

Example

Input:
3 2
100 5
10 6
-1 -1

Output:
0
2/2475
2/15




题意:输入n, k, 从n个数里面选两个,求概率选出来的两个数不大于k的概率

解析:由于数据比较大,不能模拟,一定是有规律的,自己可以多列举几种情况推下规律,比如 100 5  

选        1 2 3 4 

次数    3 2 2 1 

规律就是   所有和不大于k的个数为  (k-2)*(k-2+1) / 2 + (k-1)/2


代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
#include<string>
#define N 209
using namespace std;
const int INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
typedef long long LL;


int main()
{
    LL n, k;
    while(1)
    {
        cin >> n >> k;
        if(n == -1 && k == -1) break;
        if(k <= 2)
        {
            puts("0");
            continue;
        }
        LL a, b;
        a = (k - 2) * (k - 1)  / 2;
        a = a + (k - 1) / 2;
        b = n * (n - 1);

        LL g = __gcd(a, b);
        a = a / g;
        b = b / g;
        if(a >= b)
        {
            puts("1");
            continue;
        }
        printf("%lld/%lld\n", a, b);
    }
    return 0;
}



内容概要:本文档是AUTOSAR CP Release 4.4.0版本中关于EEPROM驱动模块的规范说明,详细定义了EEPROM驱动的功能、API接口、错误处理机制、配置参数以及与SPI外设的交互方式。该驱动支持对内部和外部EEPROM设备进行异步读、写、擦除和比较操作,并提供状态查询、作业取消和版本信息获取等功能。文档明确了驱动的行为准则,包括单任务处理、数据缓冲区使用、地址对齐处理、超时监控及硬件故障检测等,同时规定了不同类型的错误分类(开发错误、运行时错误、扩展生产错误)及其响应机制。此外,还涵盖了配置结构、回调通知机制及针对SPI通信的具体配置示例。 适合人群:从事汽车电子软件开发的工程师,特别是参与AUTOSAR架构下ECU开发的技术人员,具备嵌入式系统和C语言编程基础,熟悉MCAL、BSW模块及相关通信协议(如SPI)的开发者。 使用场景及目标:①用于开发符合AUTOSAR标准的EEPROM驱动程序;②指导如何在实际项目中配置和集成EEPROM驱动;③为实现非易失性存储管理(如NvM模块配合使用)提供底层支持;④帮助理解AUTOSAR BSW模块的设计原则与接口规范。 阅读建议:建议结合AUTOSAR其他相关规范(如MemIf、SPI Handler/Driver、BSW General)一起阅读,重点关注API定义、错误处理流程和配置参数设置。在实际开发中应严格按照文档中的约束条件进行编码与配置,并通过示例理解和实现SPI外设的集成逻辑。同时注意区分内部与外部EEPROM驱动的差异,确保满足功能安全与实时性要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值