這週作業五題程式題,一題簡答。為了加強新學的語言,規定自己要用C++解題,然後FOR迴圈突然能用了。除了寫作業外,還跟過往UVa解題做連結。
目前功力還不夠,缺變數就馬上宣告馬上用。
等之後能夠輕鬆解掉複雜題型,再去學Clean Code。
asdfdsa = "T"
asdet = "F"
#include <stdio.h>
#include<iostream>
using namespace std;
int chek(int len,string st)
{
int times=len/2;
for(int i=0;i<times;i++)
{
//cout << st[i]<<" "<<st[len-i-1];
if(st[i]!=st[len-i-1])
{
return 0;
}
}
return 1;
}
int main()
{
string st;
int lest;
cin >> st;
lest=st.length();
cout << chek(lest,st);
return 0;
}
解題時間:22 min
與這題UVA11349-Symmetric Matrix類似,有解過只是沒有貼文上來。
熟悉一下C++語法,就能輕鬆解開。
int 極限為2147483647~–2147483647 – 1
但是題目數字會超過極限,所以要取一部分字元在做運算。
與10035 Primary Arithmetic同樣解題思路,差別在於前者求相加結果;後者求進位次數。
#include <string>
#include<iostream>
using namespace std;
string add(string o,string t)
{
string sum,big,min;
if(o.length()>t.length())
{
big=o;
min=t;
}
else
{
big=t;
min=o;
}
int io,it,carry;
carry=0;
int milen=min.length();
int bilen=big.length();
for(int sti=0;sti<milen;sti++)
{
io=min[milen-1-sti] - '0';
it=big[bilen-1-sti] - '0';
sum+=(io+it+carry)%10 + '0';
(io+it+carry)>9?carry=1:carry=0;
}
int sub=bilen-milen;
for(int lai=0;lai<sub;lai++)
{
it=big[sub-lai-1] - '0';
sum+=(it+carry)%10 + '0';
(it+carry)>9?carry=1:carry=0;
}
string newsum;
for(int nei=sum.length();nei>=0;nei--)
{
newsum+=sum[nei];
}
return newsum;
}
int main()
{
//sto,stt=stone,sttwo
string sto,stt;
cin>> sto>>stt;
cout <<sto<<endl<<stt<<endl;
cout << add(sto,stt);
return 0;
}
解題時間:1 hr 5 min
關於字串語法C++和Python相差甚多,C++要背的語法多,Python使用上較為直覺。
要取字串1~3
c++
string st=st.assign(字串,0,3)
Python
st=字串[0:3]
解題時間都花在找語法上,不過正式考試時間有限,所以後來改用迴圈解題。
大數問題讓我翻到剛開始寫文的文章,有些地方文筆不滿意就做了大改。
本來是想拿這串系列文,作為找工作籌碼。
但是文章越寫越覺得這是扣分項目,就覺得寫不下去。
感謝撥冗閱讀,祝各位事事順心。