我的程式在給的測試資料上都是過的只是在line:6上答案是錯誤的
與正確輸出不相符(line:6)
您的答案為: 121
正確答案為: 10
合理的推測這個測試資料應該為100
但是我的程式在100時也是可以過
不知道是否有人能幫忙看一下
#include <iostream>
#include <string>
using namespace std;
int convert_to_int(const char);
int test_1(int );
int test_2(int ,int );
int main()
{
int n,a,b,divide,dividen,quot,length;
string str;
cin >> n;
for(int i=1;i<=n;i++)
{
while(cin >> str)
{
length=str.length();
if(length%2==0)
{
a=convert_to_int(str[0]);
b=convert_to_int(str[1]);
dividen=a*10+b;
quot=divide=test_1(dividen);
cout << quot;
dividen=(dividen-quot*quot)*100;
divide=divide*20;
for(int j=2;j<length;j=j+2)
{
a=convert_to_int(str[j]);
b=convert_to_int(str[j+1]);
dividen=dividen+a*10+b;
quot=test_2(divide,dividen);
cout << quot;
divide=divide+quot;
dividen=dividen-divide*quot;
divide=(divide+quot)*10;
dividen=dividen*100;
}
cout << endl;break;
}
else
{
a=convert_to_int(str[0]);
dividen=a;
quot=divide=test_1(dividen);
cout << quot;
dividen=(dividen-quot*quot)*100;
divide=divide*20;
for(int j=1;j<length;j=j+2)
{
a=convert_to_int(str[j]);
b=convert_to_int(str[j+1]);
dividen=dividen+a*10+b;
quot=test_2(divide,dividen);
cout << quot;
divide=divide+quot;
dividen=dividen-divide*quot;
divide=(divide+quot)*10;
dividen=dividen*100;
}
cout << endl;break;
}
}
}
return 0;
}
int convert_to_int(const char c)
{
if( c == '0' ) return 0;
else if( c == '1' ) return 1;
else if( c == '2' ) return 2;
else if( c == '3' ) return 3;
else if( c == '4' ) return 4;
else if( c == '5' ) return 5;
else if( c == '6' ) return 6;
else if( c == '7' ) return 7;
else if( c == '8' ) return 8;
else if( c == '9' ) return 9;
else return -1 ;
}
int test_1(int k)
{
for(int i=9;i>0;i--)
{
if(k>=i*i)
return i;
}
}
int test_2(int d1,int d2)
{
for(int i=9;i>0;i--)
{
if((d1+i)*i<=d2)
return i;
}
}
謝謝!