admin管理员组文章数量:1576956
【题目链接】
ybt 1036:A×B问题
OpenJudge NOI 1.3 19:A*B问题
【题目考点】
1. 不同整型数据的范围
类型 | 占用字节数 | 可表示数字范围 |
---|---|---|
char | 1 | -127~128 |
short | 2 | -32,768~32,767 |
unsigned short | 2 | 0~65,535 |
int | 4 | -2,147,483,648~2,147,483,647 |
unsigned int | 4 | 0~4,294,967,295 |
long long | 8 | -9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
unsigned long long | 8 | 0~18,446,744,073,709,551,615 |
2. 整型变量的格式控制符
字符含义:h:短整型 l:长整形 u:无符号
类型 | 格式控制符 |
---|---|
short | hd |
unsigned short | hu |
int | d |
unsigned int | u |
long long | lld |
unsigned long long | llu |
【解题思路】
观察变量范围,A,B满足:1 <= A,B <= 50000。
如果A,B都取50000,相乘得到2500000000,超出了int型可以表示的数字范围
可以用unsigned int或long long类型声明变量,进行计算
注:unsigned int 可以简写为 unsigned
【题解代码】
解法1:声明unsigned int类型变量
#include <bits/stdc++.h>
using namespace std;
int main()
{
unsigned int a, b;
scanf("%u %u", &a, &b);
printf("%u", a * b);
return 0;
}
解法2:声明long long类型变量
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a, b;
scanf("%lld %lld", &a, &b);
printf("%lld", a * b);
return 0;
}
解法3:使用cin,cout输入输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a, b;//或声明为unsigned int
cin>>a>>b;
cout<<a*b;
return 0;
}
版权声明:本文标题:信息学奥赛一本通 1036:A×B问题 | OpenJudge NOI 1.3 19 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727803935a1130862.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论