讨论 / 第三个测试点不能通过,大侠们帮忙看看
huganle 2011-08-06 05:39:00
点我顶贴 收藏 删除
#include <string>

#include <iostream>

#include <time.h>

#include <stack>

#include <fstream>

#include <ctype.h>

#include <algorithm>

#include <math.h>

using namespace std;

int change(string &s, int n)

{

int result, i, j;

result = 0;

for(i = s.size() - 1; i >= 0; i--)

{

if(isalpha(s[i]))

{

switch(toupper(s[i]))

{

case 'A':

j = 10;

break;

case 'B':

j = 11;

break;

case 'C':

j = 12;

break;

case 'D':

j = 13;

break;

case 'E':

j = 14;

break;

case 'F':

j = 15;

break;

default:

j = 0;

break;

}

}

else

j = s[i] - '0';

result += j * pow(n, s.size() - i - 1);

}

return result;

}

string change2(int num, int n)

{

stack<int> temp;

int i, j;

while(num != 0)

{

i = num / n;

j = num % n;

temp.push(j);

num = i;

}

string s;

while(!temp.empty())

{

i = temp.top();

temp.pop();

s += i + '0';

}

return s;

}

int main()

{

int n, j, k;

string s, temp, temp2, temp3;

cin >> n;

cin >> s;

int i = 0;

while(s != temp && i < 30)

{

temp2 = "";

temp3 = "";

temp = "";

j = change(s, n);

reverse_copy(s.begin(), s.end(), inserter(temp2, temp2.begin()));

k = change(temp2, n);

cout << k << endl;

temp3 = change2(j + k, n);

s = temp3;

cout << s << endl;

reverse_copy(s.begin(), s.end(), inserter(temp, temp.begin()));

i++;

}

if(i < 30)

cout << i << endl;

else

cout << "Impossible" << endl;

return 0;

}

#1 zgl@2011-08-06 05:39:00
回复 删除
回复:

那啥。。。貌似没有那么麻烦。。

#2 tangbin1998@2014-10-18 19:41:03
回复 删除
第三个测试点数据很大- -
查看更多回复
提交回复