Problem ID :h176. A.A+B Problem

New Thread

User 為什麼咧? i , j ,l

tg1061237 SendIMessage
s610475

h176. A.A+B Problem | From: 36.233.15.138 | Post Date:2018-11-24 23:32:47.0

 

#include <iostream> 

#include<string>

#include<sstream>

using namespace std;

 

int main(){

int k;

cin>>k;

for(int loop=0;loop<k;loop++){

 

int counting=0;

string input, s1 , s2 ,s3, output;

cin>>input;

int L=input.size();

for(int i=1;i<L/2+1;i++){

s1.assign(input,0,i);

for(int j=i+1;j<L*2/3+1;j++){

 

s2.assign(input,i,j-i);

s3.assign(input,j,L-j);

if((s1.size()>1&&s1[0]==0)||(s2.size()>1&&s2[0]==0)||(s3.size()>1&&s3[0]==0)) continue;

stringstream ss1(s1) , ss2(s2), ss3(s3);

long long int a,b,c;

ss1>>a ; ss2>>b; ss3>>c;

if(c==(a+b)){

output+=s1+" + "+s2+" = "+s3+"\n";

counting ++;

}

}

}

cout<<counting<<endl<<output;

}

return 0;

 

}

以上是失敗的程式碼 ...

---------------------------------- 

假設字串長度為L,
以兩層的for迴圈,
第一層 i=1~L/2,第二層 j=i+1~L*2/3,
則可以分解成三個子字串:string a=0~i-1、string b=i~j-1、string c=j~L-1,
任一子字串的長度為2以上,且第一個字元為0時不合法,
接下來再將三個子字串各自轉成long long int,
再判斷a+b==c是否成立即可。

 

 Q1 : for(int i=1 ; i<1/3*L ; i++) 把字串分成平均三段,a和b的位數不超過c。 可是            樣設也過不了測資?

 

Q2: 為什麼照提示這樣設i , j , l也過不了

求解~ 

 


文章類型: 一般 | Reply | Back
User Re:為什麼咧? i , j ,l

detaomega SendIMessage
mega

h176. A.A+B Problem | From: 42.76.66.230 | Post Date:2018-11-25 10:45:43.0

 

#include  

#include

#include

using namespace std;

 

int main(){

int k;

cin>>k;

for(int loop=0;loop

 

int counting=0;

string input, s1 , s2 ,s3, output;

cin>>input;

int L=input.size();

for(int i=1;i

s1.assign(input,0,i);

for(int j=i+1;j

 

s2.assign(input,i,j-i);

s3.assign(input,j,L-j);

if((s1.size()>1&&s1[0]==0)||(s2.size()>1&&s2[0]==0)||(s3.size()>1&&s3[0]==0)) continue;

stringstream ss1(s1) , ss2(s2), ss3(s3);

long long int a,b,c;

ss1>>a ; ss2>>b; ss3>>c;

if(c==(a+b)){

output+=s1+" + "+s2+" = "+s3+"\n";

counting ++;

}

}

}

cout<

}

return 0;

 

}

以上是失敗的程式碼 ...

---------------------------------- 

假設字串長度為L,
以兩層的for迴圈,
第一層 i=1~L/2,第二層 j=i+1~L*2/3,
則可U以分解成三個子字串:string a=0~i-1、string b=i~j-1、string c=j~L-1,
任一子字串的長度為2以上,且第一個字元為0時不合法,
接下來再將三個子字串各自轉成long long int,
再判斷a+b==c是否成立即可。

 

 Q1 : for(int i=1 ; i<1/3*L ; i++) 把字串分成平均三段,a和b的位數不超過c。 可是            樣設也過不了測資?

 

Q2: 為什麼照提示這樣設i , j , l也過不了

求解~ 

這題我記得要手寫大數
 


文章類型: 一般 | Reply | Back
User Re:為什麼咧? i , j ,l

sagit SendIMessage
sagit

h176. A.A+B Problem | From: 123.204.170.79 | Post Date:2018-11-25 21:52:56.0

 

這題我記得要手寫大數

不需要用到大數,
但要有把子字串轉換成 long long int 的能力才寫得出來。 


文章類型: 一般 | Reply | Back

New Thread

ZeroJudge Forum