OJ系统刷题 第三篇

11202 - 任意两个数的和

时间限制 : 1 秒

内存限制 : 128 MB

编程序,电脑任意输入两个整数,计算出他们的和。

输入

a b(a b为整数,范围是-2,147,483,648~2,147,483,647)

输出

a+b的和

样例

输入

1 1

输出

2

答案:

#include<stdio.h>

int main() {
    double a, b;
    scanf("%lf%lf", &a, &b);
    double sum = a + b;
    printf("%.lf\n", sum);
    return 0;
}

分析:题目说给的是输入两个整数,然后我第一次再编程的时候也就定义俩int整数,但是发现总有一个测试点通不过,后面改为俩long型的整数还是通不过。不是说逻辑不对,只是printf只能打印32位比特位补码合法的数据。如果超过了这个范围就会截断。因此用整数输入是基本通不过,大家可以试试其他语言。这个题告诉我们,输入整数,我们并不是要一定输入整数,这种思维特别容易限制我们的思考方式。

是否通过:

 

11203 - 对齐输出

时间限制 : 1 秒

内存限制 : 128 MB

读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们。

输入

只有一行,包含三个整数,整数之间以一个空格分开。

输出

只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。

样例

输入

123456789 0 -1

输出

123456789        0       -1

答案:

#include<stdio.h>

int main() {
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);
	printf("%8d %8d %8d\n", a, b, c);
	return 0;
}

分析:这个题就是个基础题目,只是为了让大家巩固左对齐和右对齐的打印方式,%md,(其中m为正数),则将数据按m位进行打印,多余的向左边补空格。如果是负数就向右补空格。我们只需要记一个即可。

简记:一个左正登

就是正数的时候向左边补空格,达到右对齐的效果。反之则不然。 

11212 - 求两位整数各个位上的数字和

时间限制 : 1 秒

内存限制 : 128 MB

输入一个正整数a(正整数a的位数为两位10≤a≤99),求a各个位上的数字之和。

例如:a的值为35,它个位上的数字是5,十位上的数字是3。

因为:5 + 3 = 8,所以输出结果为:8

输入

a

输出

a各个位上的数字之和

样例

输入

24

输出

6

 答案:

#include<stdio.h>

int main() {
	int ge, shi, N;
	scanf("%d", &N);
	ge = N % 10;
	shi = N / 10 % 10;
	printf("%d\n", ge + shi);
	return 0;
}

分析:这个题难度一般,就一个简单的题目,但是里面的思想很重要,获得一个整数的各个位数的算法思想还是很重要的,在后面的很多题目都是有用的

获得个位:对10取余

获得十位:除以10再对10取余

获得百位:除以100再对10取余

以此类推。。。

是否通过:

 

 

11215 - 求A*B

时间限制 : 1 秒

内存限制 : 128 MB

输入两个整数a、b,求a*b的值。

输入

a b (1<=a,b<=10^9)(1<=a,b<=109)

输出

a*b的值

样例

输入

1 2

输出

2

答案:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    long long a,b,product;//由题意知变量应定义为超长整型变量
    cin>>a>>b;
    product=a*b;//两数之积
    cout<<product<<endl;
    return 0;
}

分析:我之前用C语言写,怎么定义都通不过,怎么计算都通不过,还请各位大佬解释下原因。还是C++方便,因此学习C++更适合编程。

是否通过:

 

11401 - 吃苹果

时间限制 : 1 秒

内存限制 : 128 MB

八尾勇喜欢吃苹果。她现在有m(m≤100) 个苹果,吃完一个苹果需要花费t(0≤t≤100) 分钟,吃完一个后立刻开始吃下一个。现在时间过去了s(s≤10000) 分钟,请问她还有几个完整的苹果?

输入

输入三个非负整数表示 m 、t 和 s。

输出

输出一个整数表示答案。

样例

输入

50 10 200

输出

30

答案:

#include<stdio.h>
int main() {
	int m, t, s;
	scanf("%d%d%d", &m, &t, &s);
	int k = (m * t - s) % t;
	if (k == 0) {
		printf("%d\n", (m * t - s) / t);
	}
	else {
		printf("%d\n", (m * t - s) / t +1);
	}
	return 0;
}

分析:这个题目容易忽略(m*t-s)/t能不能整除的问题,如果能整除,答案就是该结果,但是如果不能整除,那么还得在该结果上加1。其实就是我们数学上常说的向上取整。

是否通过:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值