都是比较简单的几道题,就不多废话了,直接上代码。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream fin("namenum.in");
ofstream fout("namenum.out");
//将字母映射到数字,不存在的为-1
int 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: fairyroad
PROG: palsquare
LANG: 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: fairyroad
PROG: dualpal
LANG: 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;
}