Try   HackMD

C++第四週練習題目參考解答

b068: 蛇蛇矩陣

#include <iostream> using namespace std; int main() { int n; while(cin >> n){ bool d=0;//0->,1<- int num=1; for(int row=0;row<n;row++){ if(d==0){ for(int col=0;col<n;col++){ cout << num << " "; num++; } d=1; }else{ for(int col=n-1;col>=0;col--){ cout << num+col << " "; } num+=n; d=0; } cout << "\n"; } } }

b030: 健康檢查(Ⅰ)

b069: 字串串串串串接

#include<bits/stdc++.h> using namespace std; const int max_l=1e4; int main(){ string ans,ss,s1,s2,s3,t; int leng=0; cin>>s1>>s2>>s3>>t; for(int i=0;i<t.length();i+=1){ if(t[i]-'0'==1) ss=s1; if(t[i]-'0'==2) ss=s2; if(t[i]-'0'==3) ss=s3; if(i==0) ans=ss; if(i>0) ans+=ss; } cout<<ans<<'\n'; }

b053: 正確的數字

b071: 電梯 (Elevator)

#include <iostream> #include <stdio.h> using namespace std; int main() { int now=1; int n; scanf("%d", &n); int ans=0; for(int i=0;i<n;i++){ int temp; scanf("%d", &temp); int d=temp-now; now=temp; if(d>0){ ans+=3*d; }else{ ans-=2*d; } } printf("%d", ans); }

b070: 回文數

#include <iostream> #include <string> using namespace std; int main() { string num; cin >> num; bool flag=1; for(int i=0;i<=num.size()/2;i++){ if(num[i]!=num[num.size()-1-i]){ cout << "NO"; flag=0; } } if(flag==1){ cout << "YES"; } }

b075: 一元一次方程式

#include <iostream> using namespace std; int main() { string equation; cin >> equation; int leftx=0,leftsum=0,rightx=0,rightsum=0; bool lr=0; string temp=""; for(int i=0;i<equation.size();i++){ if(equation[i]=='='){ if(temp!=""){ if(lr==0){ leftsum+=stoi(temp); }else{ rightsum+=stoi(temp); } temp=""; } lr=1; }else if(equation[i]=='x'){ if(temp!=""&&temp!="+"&&temp!="-"){ if(lr==0){ leftx+=stoi(temp); }else{ rightx+=stoi(temp); } }else if(temp=="-"){ if(lr==0){ leftx--; }else{ rightx--; } }else{ if(lr==0){ leftx++; }else{ rightx++; } } temp=""; }else if(equation[i]=='+'||equation[i]=='-'){ if(temp!=""){ if(lr==0){ leftsum+=stoi(temp); }else{ rightsum+=stoi(temp); } } temp=""; temp+=equation[i]; }else{ temp+=equation[i]; } } if(temp!=""){ if(lr==0){ leftsum+=stoi(temp); }else{ rightsum+=stoi(temp); } } int x,sum; x=leftx-rightx; sum=rightsum-leftsum; if(x==0&&sum==0){ cout << "Infinite solutions"; }else if(x==0){ cout << "No solution"; }else{ int ans=sum/x; string out="x="; out+=to_string(ans); cout << out; } }