1086 就不告诉你 (15 分)
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。
输入在第一行给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。
在一行中倒着输出 A 和 B 的乘积。
5 7
53
【我的代码】
1#include <iostream>
2#include <string>
3#include <algorithm>
4using namespace std;
5char res[10000005];
6int main(){
7 long a, b;
8 cin>>a>>b;
9 long tmp = a * b;
10 while(tmp % 10 == 0){
11 tmp /= 10;
12 }
13 sprintf(res, "%ld", tmp);
14 int index = 1, count = 0;
15 while(index < tmp){
16 index *= 10;
17 count++; //记录位数
18 }
19 for(; count >= 0; count--){
20 if(res[count-1] != ' '){
21 cout<<res[count-1];
22 }
23 }
24 return 0;
25}
【思路】
题目要求比较简单,对两个输入的数相乘后逆序输出即可。主要难点是如何处理逆序问题。
这里采用了转换成字符数组的形式完成。
sprintf(res, "%ld", tmp);
该方法第一个参数是字符数组,第二个参数是转化前的形式,第三个参数是对应的整型变量。这简直帮了大忙了!
但是由于使用的是直接逆序输出,没有使用reverse,所以这里需要统计字符串的长度。计算方法也很简单,就不断乘10,跟1,10,100对比,来确定这个数是多少位的。
最后确定完多少位后进行输出就完成啦!