您的位置:首页 > 其它

USACO Solution Code(5):Name That number, Palindromic Squares and Dual Palindromes

2010-08-30 11:04 405 查看
都是比较简单的几道题,就不多废话了,直接上代码。 #include <iostream>#include <fstream>#include <string>#include <vector> using namespace std; ifstream fin("namenum.in");ofstream fout("namenum.out"); //将字母映射到数字,不存在的为-1int map[] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,-1,7,7,8,8,8,9,9,9,-1}; void solve(){ string object; in>>object; int len; len = object.size(); fstream dict_in("dict.txt"); vector<string> dict; string temp; while( dict_in>>temp ){ if(temp.size()==len){ //只取等于数字串相等的字符串 dict.push_back(temp); } } //sort(dict.begin(),dict.end()); //dict.txt文件已经排好序,无需排序了. bool find = false; bool has_result = false; for(int i=0;i<dict.size();++i){ find = true; for(int j=0;j<len;++j){ if(map[dict[i][j]-'A']!=object[j]-'0'){ find = false; break; } } if(find){ out<<dict[i]<<endl; has_result = true; } } if(!has_result) out<<"NONE"<<endl;} int main(){ solve(); return 0;} /*ID: fairyroadPROG: palsquareLANG: C++*/#include<fstream>#include<deque>#include<string>using namespace std; ofstream fout ("palsquare.out");ifstream fin ("palsquare.in"); int B;string help="ABCDEFGHIJ"; inline bool IsPalindrome(const deque<int>& examinee){ int header=0, tail=examinee.size()-1; while(header<=tail){ if(examinee[header]!=examinee[tail]) return false; ++header; --tail; } return true;} inline deque<int> conversion(int source, int k){ deque<int> res; while (source){ res.push_front(source%k); source/=k; } return res;} inline void myPrint(const deque<int>& toPrint){ deque<int>::const_iterator pos=toPrint.begin(), tail=toPrint.end(); bool flag=false; for (pos; pos!=tail; ++pos) { flag=(B>9 && *pos>9); if(flag) fout<<help[*pos-10]; else fout<<*pos; }} int main(){ fin>>B; for(int i=1;i<=300;i++) { deque<int> res=conversion( i*i, B); if (IsPalindrome(res)){ myPrint(conversion(i,B)); fout<<" "; myPrint(res); fout<<endl; } } return 0;} /*ID: fairyroadPROG: dualpalLANG: C++*/ #include<deque>#include<fstream>using namespace std; ofstream fout ("dualpal.out");ifstream fin ("dualpal.in"); inline bool IsPalindrome(const deque<int>& examinee){ int header=0, tail=examinee.size()-1; while(header<=tail){ if(examinee[header]!=examinee[tail]) return false; ++header; --tail; } return true;} inline deque<int> conversion(int source, int k){ deque<int> res; while (source){ res.push_front(source%k); source/=k; } return res;} bool IsDualpal(int source){ int count=0, begin=2; while (begin<=10) { if( IsPalindrome(conversion(source, begin++))) ++count; if(count==2) return true; } return false;} int main(){ int num , start; fin>>num>>start; int count=0; ++start; while (count<num) { if (IsDualpal(start)){ fout<<start<<endl; count++; } start++; } return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: