标题:输入两个正整数A和B,求A×B的值。注意乘积的范围和数据类型的选择。帮帮忙 ...
只看楼主
ws19103330
Rank: 1
来 自:温柔
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-28
结帖率:100%
 问题点数:0 回复次数:4 
输入两个正整数A和B,求A×B的值。注意乘积的范围和数据类型的选择。帮帮忙啊!
#include<stdio.h>

int main()
{
    int A,B;
    scanf("%d %d",&A,&B);
    printf("%ld",(long int)(A*B));
    return 0;
}

测试点1    答案正确    284KB    3MS
测试点2    答案正确    284KB    2MS
测试点3    答案正确    272KB    3MS
测试点4    答案正确    276KB    2MS
测试点5    答案正确    280KB    2MS
测试点6    答案正确    272KB    2MS
测试点7    答案正确    280KB    3MS
测试点8    答案正确    272KB    2MS
测试点9    答案错误    284KB    2MS???????
测试点10    答案正确    272KB    2MS
搜索更多相关主题的帖子: 输入 选择 测试 答案 int 
2019-10-28 15:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
连题目都没有,别人怎么能知道你的代码是否符合题意?

说个题外话吧,(long int)(A*B) 肯定是错误用法,如果 A*B 溢出int,那么你将溢出后的结果转到long,那“溢出”这个行为本身还在。
2019-10-28 15:51
ws19103330
Rank: 1
来 自:温柔
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-28
得分:0 
回复 2楼 rjsp
【题目描述】
输入两个正整数A和B,求A×B的值。注意乘积的范围和数据类型的选择。

【输入】
一行,包含两个正整数A和B,中间用单个空格隔开。1≤A,B≤50000。

【输出】
一个整数,即 A×B 的值。

【输入样例】
3 4
【输出样例】
12
2019-10-28 16:57
ws19103330
Rank: 1
来 自:温柔
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-10-28
得分:0 
回复 2楼 rjsp
那怎么写??
2019-10-28 16:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
1≤A,B≤50000
50000*50000 = 2500000000
ln(2500000000)/ln(2) = 31.22,也就是需要至少 32bits 来保存结果。

如果OJ用的是标准C编译器,那么可以用 uint32_t。(int32_t 是不行的,因为它有1bit用作了符号,有效位只有31bits)
如果OJ不支持uint32_t,那可以用 unsigned、unsigned long、unsigned long long 等等依次测试,例如(只是“例如”,因为C标准只规定int不小于16bits就行):
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned A, B;
    scanf( "%u%u", &A, &B );
    printf( "%u\n", A*B );
}

收到的鲜花
  • 温柔2019-10-28 17:18 送鲜花  1朵  
2019-10-28 17:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497480-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.356438 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved