初级天翼
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==0)
{
cout<<0;
return 0;
}
if(n<0)
cout<<"-";
int a,b;
if(n>0)
{
while(n!=0)
{
a=n%10;
n/=10;
if(a!=0)
cout<<a;
}
}
else
{
int i=1;
while(n!=0)
{
if(i==1)
continue;
else
{
b=n%10;
n/=10;
if(b!=0)
cout<<b;
}
i++;
}
}
return 0;
}
错误代码在上面。
样例1过了,而且输入380,输出也是83。
样例2错了,只输出负号没有输出数字。
找错!!!one four four three
40分,2,6,8,9,10测试点超时(样例2这样的就超时了),7测试点错误。
郑怡翔在2018-08-30 11:58:01追加了内容
刚刚发现的问题:只要是<0的数,都超时,只输出负号
郑怡翔在2018-08-30 20:18:40追加了内容
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==0)
{
cout<<0;
return 0;
}
if(n<0)
{
cout<<"-";
n=abs(n);
}
int a;
while(n!=0)
{
a=n%10;
n/=10;
if(a!=0)
cout<<a;
}
return 0;
}
刚改的,70分,7,9,10测试点WA,又哪个地方错了
新手天翼
很简单的while循环
if(n<0)
cout<<"-";//判断是否为负数,若是先输出一个﹣号
n=abs(n);//取绝对值
do
{
s=s*10+n%10;
n/=10;
}while(n!=0);//倒序,把每一位拆出来。
cout<<s<<endl;//最后输出。
新手光能
你注意一下范围
-1,000,000,000≤ N≤ 1,000,000,000
是不是太小了
我建议用string。
屠景瑞在2018-08-30 22:43:47追加了内容
还有这行字:
输入格式:
输入文件名为reverse.in 。
没看见吧
高级天翼
我用for代替while循环
蒋智航在2018-08-31 09:33:01追加了内容
@屠景瑞 是这样的,酷町堂是原题照抄的,这是比赛题。肯定有.in文本文档啦。但你不用在上面写freopen
蒋智航在2018-08-31 09:48:58追加了内容
我建议用string;
变量名为str ;
首先啊啊啊啊啊啊啊,你要判断0;你这个作对啦✔✔✔✔✔✔✔✔; tan 90°!!!
if(str==0)
{
cout<<0<<endl;
}
后面我与你的代码有天壤之别,请高抬贵眼往下看:
else
{
字符串首位为负号,就输出负号;
if(str[0]=='-')
{
cout<<"-";
(注:花括号没写完整只因为那一句话没写完,别作死加一个花括号就直接爆0)
for(i=str.length()-1;i>0;i--)
{
if(str[i]!='0')
{
for(;i>0;i--)
cout<<str[i];
cout<<endl;
break;
}
}
} //这个花括弧衔接if 的花括号
↑指的是若str[0]为符号,做的逆序输出(if 你是大(蒟)佬(蒻),(不)可以用高精度做逆序输出)
若str[0]不为负号,就做普通逆序输出
else
{
for(i=str.length()-1;i>=0;i--)
{
if(str[i]!='0')
{
for(;i>=0;i--)
cout<<str[i];
break;
}
}
}
}
↑ 箭头指的这个花括号是衔接最上面else的没完成的花括号(总算完成else的遗愿了)
蒋智航在2018-08-31 09:51:39追加了内容
还不会?
if(str==0)
{
cout<<0<<endl;
}
else
{
if(str[0]=='-')
{
cout<<"-";
for(i=str.length()-1;i>0;i--)
{
if(str[i]!='0')
{
for(;i>0;i--)
cout<<str[i];
cout<<endl;
break;
}
}
}
else
{
for(i=str.length()-1;i>=0;i--)
{
if(str[i]!='0')
{
for(;i>=0;i--)
cout<<str[i];
break;
}
}
}
}
聪明的你可能会发现,所有的for循环都把i的定义甩在千里之外,你就在循环外定义i即可
我是用for代替while,你管得着?
蒋智航在2018-08-31 09:56:20追加了内容
最后完美🆒
return 0;
蒋智航在2018-08-31 10:00:02追加了内容
#include<bits/stdc++.h>
using namespace std;
string s;
int a[102];
int main()
{
cin>>s;
a[0]=s.length();
for (int i=1;i<=a[0];i++)
{
a[i]=s[a[0]-i]-'0';
cout<<a[i];
}
return 0;
}
以上是逆序输出高精度代码
举报者最帅
蒋智航在2018-08-31 10:00:37追加了内容
不对不对,是采纳者最帅
蒋智航在2018-08-31 10:08:41追加了内容
哎呀,管理员若收到举报消息别关闭❎这个回答啊,我花了n分钟才打完的,再说,我只是发一下保险的高精度逆序输出代码,虽然是完整的,但是不是这一题啊,我知道我手*,但是
-
私はタイピングが大変ですね。
-
我很生气
-
唉唉唉唉唉唉
-
此处省略2⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹⁹个字
-
高精度代码是给大佬看的
-
只有不想举报我的人才能看见我的高精度代码
蒋智航在2018-08-31 10:18:16追加了内容
实话实说,我是蒟蒻
差距是什么,我不曾知道 差距在哪里,我不曾探索 直到接触了OI,我便有了答案 差距使我的生活变得暗淡无光 差距使我的前途一片迷茫 差距使我失去未来的方向 有人用了1个月从0基础学到网络流 我用了一世纪还没学完基础 这,就是差距 有人用了30分钟就可以AK比赛 我用了一世纪却1分都拿不到 这,也是差距 有人用10分钟就可以打好一题 我却用了一世纪 这,还是差距 有人打一题的代码用了20行 我却用了10000行 这,仍然是差距 看着别人和我的差距越来越大,越来越远 我好像突然明白 只有自己开始改变 差距才会改变
蒋智航在2018-08-31 14:56:37追加了内容
首先我们来看一下题目,题目要求我们把数字翻转过来输出,不过要是我们正常的数字表现形式,也就是第一个非0数字前面不能有0,打个比方,如果我们输入100,那么最后的结果就是1,因为100反过来输出结果就是001,不过我们平时的数字可不是这样的哦,正常的是不是应该是1才对,当然,如果我们输入的数字是0,按照题目要求,我们直接输出0就好了,当然,还有同学考虑到了负数的问题,其实呢,负数也就是在我们正常见到的正整数的基础上加了一个“-”号而已,所以负数的处理和正整数是一样的,因为即使你把每位数字反过来输出,它的正负性质是不会改变的,所以对于负数我们也和正数一样的处理就行了,不需要特别考虑。
我们再来讲一下解题的思路,要把数字翻转过来,很明显我们需要把他的每一位数字都取出来,但是和上一题不同的是,我们并不知道这个数字是多少位的,所以并不能我们之前的方式来处理,那么该怎么办呢?
我想大家应该知道我们取出每一位数字的处理办法,就是把数字%10,取完每位数字之后我们还需要把原来的数字除以10,那么如果这样一直处理下去呢,到最后一位数的时候,他除以10的结果肯定会是0,因为最后一位数肯定是小于10的,所以我们就能够通过这个来解题,我们可以通过while循环来判断结束条件,如果除到最后它的值是0了,说明循环就结束了,我们也取出了他的每一位数字。
那么我们怎么得到最后的结果呢,我们假设初始的数字是n,那么我们的的循环条件也就是while(n!=0),这里假设我们先取出了个位数字,也就是n%10,我们设置另一个变量sum求最后的结果,取出了个位数字之后我们的sum就应该加上个位数,然后n应该除以10(n=n/10),然后再取十位上的数,那么就把刚才除以10之后的n再%10,就取出来了这个数字,然后sum就应该加上这个值了,不过有变化的就是,我们刚才取出的个位数字是不是应该升到十位上了,这样才能让我们原来的数字反过来,那么就应该把个位数字*10再加上取出来的十位数字,接下来的数位处理方法也和这个一样,这里也就是我们的sum要变成这样:sum=sum*10+n%10;使用这种方式,我们都不用考虑输入数字是0的情况,因为我们初始化sum=0,当n=0的时候,不进入循环,直接输出sum,而sum=0.
拓展:
拓展一种解法,其实呢,我们可以把数字看成字符串,然后反过来输出字符串的每个字符就行了,这种方法看起来很简单,但是实际上要考虑的问题还是非常多的,首先我们要考虑只有一个0的情况,要单独输出;然后正数,我们要反过来找出第一个不是字符0的字符开始输出;然后是负数的情况,我们要先输出‘-’号,然后其他的操作和正数一样,这种方式比较复杂!