http://acm.timus.ru/problem.aspx?space=1&num=1048又是一道ACM问题!题目本身比较简单,但效率存在差异http://acm.timus.ru/status.aspx?space=1&num=1048&author=56303这是一个用Java解的,效率很高(不是跟c++和pascal比)0.281秒,
我本来把目标定在超过这个JAVA,可试了几次之后未果,下面是我的程序,大家帮忙看一下,有什么地方可以改进。
现在是0.343,速度比人家的慢,内存占用也比人家的大!难道非要转成1000000000进制?
static void Main()
{
short[] adder;
int N; using (StreamReader sr = new StreamReader(Console.OpenStandardInput()))
{
N = int.Parse(sr.ReadLine());
adder = new short[N];
short A;
short B; for (int i = 0; i < N; i++)
{
A = (short)sr.Read();
sr.Read();
B = (short)sr.Read();
sr.Read();
sr.Read();
adder[i] = (short)(A + B - 96);
} for (int i = N - 1; i > 0; i--)
{
if (adder[i] > 9)
{
adder[i] -= 10;
adder[i - 1]++;
}
}
} using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()))
{
for (int i = 0; i < N; i++)
sw.Write(adder[i]);
}
}
我本来把目标定在超过这个JAVA,可试了几次之后未果,下面是我的程序,大家帮忙看一下,有什么地方可以改进。
现在是0.343,速度比人家的慢,内存占用也比人家的大!难道非要转成1000000000进制?
static void Main()
{
short[] adder;
int N; using (StreamReader sr = new StreamReader(Console.OpenStandardInput()))
{
N = int.Parse(sr.ReadLine());
adder = new short[N];
short A;
short B; for (int i = 0; i < N; i++)
{
A = (short)sr.Read();
sr.Read();
B = (short)sr.Read();
sr.Read();
sr.Read();
adder[i] = (short)(A + B - 96);
} for (int i = N - 1; i > 0; i--)
{
if (adder[i] > 9)
{
adder[i] -= 10;
adder[i - 1]++;
}
}
} using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()))
{
for (int i = 0; i < N; i++)
sw.Write(adder[i]);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货