3E.处女座和小姐姐(C++)

处女座和小姐姐(C++)

点击做题网站链接

题目描述
既然昨天晚上处女座已经训练了,明天才要交作业,那今天就是平淡无奇要上课的一天了。
然而处女座也想自己的小姐姐了,可是这节课是老师安排座位,处女座坐在(1,1),而小姐姐坐在(n,m)。他们之间只能通过传纸条的方式来交流感情。对于处女座而言,他上课不想过度分心,因此并不想传纸条,只在那里趁机折千纸鹤。
老师上课喜欢用"开火车"的方式让大家轮流回答问题,显然处女座作为(1,1)位,会被第一个叫起来回答,之后老师将依次叫起(2,1),(3,1),….(n,1),(n,2),(n−1,2)⋯(1,2),⋯的人起来回答问题,每个人回答问题需要1秒。处女座在自己回答完以后会以每秒1个千纸鹤的速度折叠,在小姐姐开始回答问题的时候停止折叠。
处女座想知道,他这节课一共要折多少个千纸鹤?

输入描述:
输入文件包含T+1行,第一行包含一个整数T,表示用例组数。
接下来T行,每行包含两个整数n,m表示小姐姐的位置和教室的大小。

输出描述:
对于每一组用例,用一行输出一个整数,表示处女座要折的千纸鹤的个数。

示例1
输入

1
3 3

输出
7

备注:
2≤n,m≤1,000

题目坑点:
m是奇数和偶数的时候,表达式不一样,一道超级简单的数学问题。

解题代码:

#include <iostream>
using namespace std;
int main()
{
    int T,n,m;
    cin >> T;
    while(T--)
    {
        cin >> n >> m;
        if(m%2) cout << n*m-2 << endl;
        else cout << m*n-n-1 << endl;
    }
}
题目:CSAPP 3e.2.73 问题描述: 假设有一个计算机系统,它的字长为32位,采用补码表示整数。我们知道,计算机系统中常常会有溢出现象,即计算结果超过了可以表示的范围。例如,在一个32位字长的系统中,如果两个整数相加的结果大于$2^{31}-1$,则会发生溢出。对于一个32位字长的系统,请回答以下问题: a) 哪些情况下会发生溢出? b) 对于每一种可能的溢出,可以通过观察操作数的哪些位的信息来判断是否发生了溢出?同时,给出通过观察操作数的哪几位信息可以判断溢出的逻辑表达式。 c) 假设我们用C语言编写一个函数,接受两个32位整数作为参数,判断它们相加是否发生溢出。请给出这个函数的代码实现。 回答: a) 发生溢出的情况包括两个整数正负相同,相加结果的符号与操作数不同;或者两个整数正负相反,相加结果的符号与较大的操作数相同。 b) 如果两个整数正负相同,那么溢出发生当且仅当相加结果的高31位与操作数不同;如果两个整数正负相反,那么溢出发生当且仅当相加结果的高31位与较大的操作数相同。 c) 我们可以将两个操作数的高31位与其符号位进行比较,来判断溢出是否发生。其中较大的操作数的高31位可以通过逻辑与运算符(&)提取,符号位可以通过右移31位获得。相关代码如下: ```C int int_add_overflow(int x, int y) { int sum = x + y; int sign_x = x >> 31; int sign_y = y >> 31; int sign_sum = sum >> 31; return (sign_x == sign_y) && (sign_x != sign_sum); } ``` 以上函数返回1表示溢出发生,返回0表示未发生溢出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值