9.题目
倒着思考,注意超时处理
代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int t,cas=0;
cin >> t;
while (t--)
{
cas++;
long long a, b;
int l, r;
cin >> a >> b;
l = 0; r = 0;
while (a != 1 || b != 1)
{
if (a == 1) { r += b - 1; b = 1; }
else if (b == 1) { l += a - 1; a = 1; }
else
{
if (a > b)
{
int c = a / b;
if (c > 1) {
a = a - c*b;
l += c;
}
else
{
l++;
a -= b;
}
}
else
{
int c = b / a;
if (c > 1)
{
b = b - c*a;
r += c;
}
else
{
r++;
b -= a;
}
}
}
}
printf("%s%d:\n", "Scenario #", cas);
cout << l << " " << r << endl<<endl;
}
}
8. 题目
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
void post(char*a,char*b,int len)
{
if (len == 0)return;
int i;
for (i = 0; i < len; i++)
if (b[i] == a[0])break;
if (i < len)
{
post(a + 1, b, i);
post(a + 1 + i, b + i+1, len - 1 - i);
}
cout << a[0];
}
int main()
{
char a[10000], b[10000];
while (scanf("%s",a)!=EOF) {
cin >> b;
post(a, b, strlen(a));
cout << endl;
}
return 0;
}