求助

P1303 A*B Problem

Sssszx @ 2023-09-13 14:52:47

为什么用getline输入字符串就全WA

用cin就AC了


by One_JuRuo @ 2023-09-13 15:07:09

@Sssszx 能发代码吗?猜测可能是读到行末回车了


by Sssszx @ 2023-09-13 15:10:42

@One_JuRuo

#include<bits/stdc++.h>
using namespace std;
string s;
string t;
int x[2222];
int y[2222];
int p[2222];
int main(){
    cin>>s>>t;
    //getline(cin,s);
    //getline(cin,t);
    if(s<t) swap(s,t);
    for(int i=0;i<s.size();i++) x[s.size()-i]=s[i]-'0';
    for(int i=0;i<t.size();i++) y[t.size()-i]=t[i]-'0';
    for(int i=1;i<=s.size();i++)
        for(int j=1;j<=t.size();j++)
            p[i+j-1]+=x[i]*y[j];
    for(int i=1;i<=s.size()+t.size();i++){
        p[i+1]+=p[i]/10;
        p[i]%=10;
    }
    int len=s.size()+t.size();
    while(len>1&&p[len]==0) len--;
    for(int i=len;i>=1;i--) cout<<p[i];
    return 0;
}

by One_JuRuo @ 2023-09-13 15:14:48

@Sssszx 就是读到行末回车了,你把回车也算进去了。

你可以输出 s[s.size()-1],然后发现只换行,不是最后一位数字


by Let_Fly @ 2023-09-13 15:15:15

@One_JuRuo 应该就是


by One_JuRuo @ 2023-09-13 15:17:04

但是我去试了试,好像又不是。。。大概要数据比较大才会吧。。。【汗


by Let_Fly @ 2023-09-13 15:17:26

@Sssszx 写一个while就行了


by Sssszx @ 2023-09-13 15:19:35

@One_JuRuo 我试着也没啥问题

不影响结果为什么会错。。。晕乎


by Sssszx @ 2023-09-13 15:20:12

@Let_Fly ok我试试 谢谢


by One_JuRuo @ 2023-09-13 15:21:04

@Sssszx 可能是评测机环境不一样,反正比较玄学,getline用的时候还是要少用,除了那种要读空格的,最好还是用cin,或者用字符数组和scanf,或者直接while+getchar。


by Sssszx @ 2023-09-13 15:23:20

@One_JuRuo 搜嘎斯内 多谢提醒

栓q( ̄▽ ̄)ブ


|