Description
有个长度为1000000以内的字符串C,提供整数a,b,d,e,计算ans=a*b%d,然后取C从第e(e的取值从0开始)号位置的字符开始长度为ans的那子串并输出。(1<=a,b<=5000)数据保证子串不超过C的字符串范围。
Input
有多组测试数据,对于每组数据,第一行为4个整数,a,b,d,e,第二行为给定的字符串C。
Output
对于每组测试数据,输出所求的子字符串。
Sample Input
3 4 5 1
abcdefghijk
Sample Output
bc
HINT
代码
#include<iostream>
using namespace std;
main()
{
int a,b,d,e;
char cn[1000000];
while(scanf("%d%d%d%d",&a,&b,&d,&e)!=EOF){
cin>>cn;
int ans=a*b%d;
for(int i=e;i<e+ans;i++){
cout<<cn[i];
}
printf("\n");
}
}
题目看起来很简单,但我却提交了4~5次才想出来错在哪里,原来不是算法有问题,是输出格式有问题,之前没有加printf("\n);导致输出的字符串没有分开,导致wa。
这是我在观察oj系统的界面上得出的,这里应该是运行阶段
这里应该是比较阶段,即比较库的答案文件与输出的差别(这都是我猜的,错了不怪我。。),既然出现compling也就意味着运行没有出现超时问题,但出wa,所以我猜测输出格式有问题——输出的字符串连在一起无法识别,于是我在for循环后加上换行,问题就这么轻而易举的解决了