Complete the Sequence (天生完整序列数)第一次做英文c++的题 ...

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736


  1.    第一次接触全是英语的题,怎么会有这么难的呢?
  2.    首先我拿起了它和中文的题目一对比,发现分成了5个板块,将这5个板块细细拆分后,
复制代码
了解到了大意,大意为输入n组数据,其中输入x个数,然后找出它的规律,输出接下来的y个数。比如一组数据,1、2、3、4、5、6,要输出剩下的数据,你肯定会不有毫不犹豫的回答。7、8。是的,这就是规律,但是有1组数据难倒了:它有9个1,另有一个2,然后它样例输出却是11,56。这道规律生生难倒了我,可是也只能硬着头皮往前做了,然后发现有一个规律,很深的规律。发现它是一个关于分差的问题,简单来说它是用后一个数减去前面一个数,得到差。然后把这组差继续用后一个数减去前一个数,直到只有末了一个差为止,然后分差就结束了。序列中的数就从0开始把它从末了一个分差的值逐步往上加去。于是我利用差分算出了结果。可是另有一个问题,它总会时间超时,怎么办?我发现不但要用分差,还得用到前缀的知识,然后思考了一会儿,终于把这道题攻破了,可真不容易。
详细解法如下:
include

using namespace std;
int a[1005][1005];

int main()
{
int ans;
cin >> ans;
while(ans--)
{
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++)
cin >> a[0];
for(int i = 1; i < n; i ++ )
for(int j = 0; j < n - 1; j++)
a[j] = a[i - 1][j + 1] - a[i - 1][j];
for(int i = 1; i = 0; i--)
for(int j = 0; j < m; j++)
a[n - i + j] = a[i + 1][n - i + j - 1] + a[n- i + j - 1];
for(int i = 0; i < m - 1; i++)
cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我可以不吃啊

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表