您的位置:首页 > 其它

【B1086】 字符串 数字逆置 判非0位

2020-03-28 20:02 43 查看

题目描述
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。
输入格式:
输入在第一行给出两个不超过 1000 的正整数 A 和 B,其间以空格分隔。
输出格式:
在一行中倒着输出 A 和 B 的乘积。
输入样例:
5 7
输出样例:
53

【分析】
主要就是注意当乘积结果末尾是0时 ,输出时要从第一个不为0的数开始输出,例如:100 * 100 = 10000,则应该输出1.
解决此问题我最开始想的
法一 :用定义一个index 先测出第一个不为0的数的位置 再顺序输出后面各位数字即可 但提交显示有两个测试样例未通过。
法二:利用flag标志,当测到不为0时 输出并将flag置为1;
发三:柳神利用的c++ 有关字符串的函数 解决
0.取整数的各位数字
1.将各位数字逆置
3.判非0
还有待学习 的确很方便。

AC代码

#include<cstdio>
int main(){
int a[10] = {0};    //初始化为0
int A, B, C;
scanf("%d%d", &A, &B);
C = A * B;
int i = 0;
while(C){
a[i++] = C % 10;
C = C / 10;
}
int flag = 0;
for(int j = 0; j < i; j++){
if(flag == 0 && a[j] == 0) continue;
if(flag == 1 || a[j] != 0){
printf("%d", a[j]);
flag = 1;
}
}
return 0;
}

法一代码

int index = 0;
for(int j; j < i; j++){
if(a[j] != 0){
index = j;
break;
}
}
for(int j = index; j < i; j++){
printf("%d", a[j]);
}

柳神代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int a, b;
scanf("%d %d", &a, &b);
string s = to_string(a * b);
reverse(s.begin(), s.end());
printf("%d", stoi(s));
return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Jack Pearson 发布了9 篇原创文章 · 获赞 0 · 访问量 267 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: