close
這次的題目是http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=18213
同時也是第53次ITSA的題目
這題比較麻煩的是要怎麼判斷甚麼時候該往前數或是往後數,找出其中花費最少的次數
如果一開始是0而密碼是9該怎麼轉呢
往後數的話就是9次,往前數的話就只要1次
再來
從0轉到6呢
往後數就是6次,那往前就是4次
0轉到5呢
往後是5次,往前也是5次
發現其中的規律了嗎?
往前往後的次數加起來是10,而當其中一個的次數>5,那麼另外一個就是較少的次數了
所以只要將同一個位置的密碼相減,如果這結果>5,就用10減掉它
再把所有位置的次數加起來印出,這題就解決了
- #include <iostream>
- #include <string.h>
- #include <sstream>
- #include <vector>
- using namespace std;
- int main()
- {
- int num;
- cin>>num;
- cin.get();
- for(int i=0;i<num;i++)
- {
- string input;
- vector<vector<int> >arr;
- getline(cin,input);
- istringstream delim(input);
- string token;
- while(getline(delim,token,' '))
- {
- vector<int>inside;
- for(int j=0;j<token.length();j++)
- {
- inside.push_back(token[j]-'0');
- }
- arr.push_back(inside);
- }
- int sum=0;
- int gap;
- for(int j=0;j<arr[0].size();j++)
- {
- gap=arr[1][j]-arr[0][j];
- if(gap<0)
- gap*=-1;
- if(gap>5)
- gap=10-gap;
- sum+=gap;
- }
- cout<<sum<<endl;
- }
- return 0;
- }
若想閱讀相關文章請關注我的粉絲團
小資菜鳥向前衝
文章標籤
全站熱搜
留言列表