社区讨论
80分,改后70,WA求解
P1307[NOIP 2011 普及组] 数字反转参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @lo7ruvvp
- 此快照首次捕获于
- 2023/10/27 06:44 2 年前
- 此快照最后确认于
- 2023/10/27 06:44 2 年前
上 80 分代码:
CPP#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main() {
scanf("%d", &n);
int k = 0, nn = abs(n);
int m = nn;
while(nn) {
if(nn / 10 != 0) {
nn /= 10;
k++;
} else {
k++;
break;
}
}
if(n == 0) {
printf("%d", n);
} else if(n < 0) {
printf("-");
}
if(m % 10 == 0) {
m /= 10;
for(int i = 1; i < k; i++) {
printf("%d", m % 10);
m /= 10;
}
} else {
for(int i = 1; i <= k; i++) {
printf("%d", m % 10);
m /= 10;
}
}
return 0;
}
主要思路是用 while 求整数绝对值长度,然后判断是否为 0 ,或负数,否则正数,负数输出" - ",接着倒序输出,这里忽视了 9000000 的情况,导致输出 0 没有全部判断
下面是 70 分代码:
CPP#include <cstdio>
#include <cmath>
using namespace std;
int n;
int main() {
scanf("%d", &n);
int k = 0, nn = abs(n);
int m = nn;
while(nn) {
if(nn / 10 != 0) {
nn /= 10;
k++;
} else {
k++;
break;
}
}
if(n == 0) {
printf("%d", n);
} else if(n < 0) {
printf("-");
}
for(int i = 1; i <= k; i++) {
if(m % 10 == 0) {
m /= 10;
} else {
printf("%d", m % 10);
m /= 10;
}
}
return 0;
}
改后在 for 循环内加入
CPPif(m % 10 == 0) {
m /= 10;
}
判断当前数值是否为 0 ,否则输出当前数值
求dalao讲解, 蟹蟹
回复
共 5 条回复,欢迎继续交流。
正在加载回复...