c++ - SPOJ 问题 ADDREV - 添加反转数字(考虑到我的代码,我得到了一个错误的答案,这很荒谬......)
问题描述
我尝试使用字符串来做这个问题,我在编译器上得到了测试用例的正确答案,但 spoj 说错误答案。
我尝试了隐藏的测试用例 0,0 并处理了它,但我仍然得到错误的答案
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int t=0,x=0,y=0,z=0,i=0;
cin>>t;
string s1,s2,s3;
while(t--)
{
cin>>s1>>s2;
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
x=stoi(s1);
y=stoi(s2);
z=x+y;
s3=to_string(z);
if(z!=0)
{
for(i=0;s3[i]!='\0';i++)
{
if(s3[i]=='0')
{
s3[i]='\0';
break;
}
}
reverse(s3.begin(),s3.end());
}
cout<<s3<<endl;
}
}
我在我的编译器上得到了正确的答案,但是当我在 spoj 上提交相同的代码时,我得到了错误的答案。这可能是因为网站期望 int 中的答案而我已将 Answer 打印为 String 吗?
解决方案
您应该先从 z 整数的末尾删除 0,然后再将其转换为字符串
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int t=0,x=0,y=0,z=0,i=0;
cin>>t;
string s1,s2,s3;
while(t--)
{
cin>>s1>>s2;
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
x=stoi(s1);
y=stoi(s2);
z=x+y;
while(z%10==0)
{
z=z/10;
}
s3=to_string(z);
reverse(s3.begin(),s3.end());
cout<<s3<<endl;
}
}
推荐阅读
- sql - UNIX TIMESTAMP 查询在 SQLite 中不起作用
- api - AWS 上的服务,用于将数据从一项服务移动到另一项服务
- php - access php array elemen in HTML
- python - How to select rows from dataframe based on regex of multiple columns
- flutter - 输入'列表
' 不是类型 'List 的子类型 ' - python - 为什么chrome webdriver配置无效?
- java - 在标记为@Parameterized.Parameters 的方法中读取变量
- c - 在将数组传递给函数时,要求编译器将数组视为数组(而不是指针)
- javascript - Django,将Javascript插入模板的语法
- php - Laravel 广播事件的构造函数调用的类型再次提示模型关系