刚结束的如入门赛,有没有大佬帮忙看看这题哪里错了(div.4,署前街少年)
  • 板块学术版
  • 楼主CSPJ_AKme
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/7/14 21:14
  • 上次更新2023/11/3 09:48:42
查看原帖
刚结束的如入门赛,有没有大佬帮忙看看这题哪里错了(div.4,署前街少年)
1030814
CSPJ_AKme楼主2023/7/14 21:14

题(题号T352146):

署前街少年

题目背景

时光无法缝补那块破碎的黑板
虚荣的少年与署前街越来越远
——赵雷,《署前街少年》

题目描述

某 E 得到了一个长度为 2N2N 的数列 a1,a2,a3,…a2Na_1, a_2, a_3, \dots a_{2N},数列的第 ii 个数为 aia_i。

奇变偶不变,符号看象限。这是三角函数诱导公式的重要口诀。某 E 同样想对数列实施这样的变换,具体来说:

  • 对于 aia_i,若 i mod 2=0i \bmod 2=0,则称 aia_i 为偶位数;若 i mod 2=1i \bmod 2 = 1,则称 aia_i 为奇位数。
  • 对于 aia_i,记 i mod k=pi \bmod k = p,则称 aia_i 为第 pp 象限数,其中 kk 为给定的参数。

奇变偶不变,符号看象限。某 E 将遵循以下的规则对数列进行变换:

  • 若 aia_i 为偶位数,则 aia_i 不变。
  • 若 aia_i 为奇位数,设 aia_i 为第 pp 象限数,则 aia_i 变为所有第 pp 象限数的和对 ii 取模的值。

请注意以上变换不会影响「所有第 pp 象限数的和」这一数值。

某 E 想知道,变换后的数列是什么样的。

输入格式

输入共两行。

输入的第一行为两个整数 N,kN,k。

输入的第二行为 2N2N 个整数,第 ii 个代表 aia_i。

输出格式

输出一行 2N2N 个整数,第 ii 个代表变换后的 aia_i。

样例 #1

样例输入 #1

10 4
5 2 0 4 7 6 2 7 1 3 5 7 9 45 3 6 12 36 78 1

样例输出 #1

0 2 1 4 4 6 4 7 7 3 0 7 8 45 13 6 0 36 12 1

提示

  • 对于 40%40\% 的测试数据,1≤N≤10001 \le N \le 1000,2≤k≤102 \le k \le 10。
  • 对于 100%100\% 的测试数据,1≤N≤5×1051 \le N \le 5 \times 10^5,2≤k≤1042 \le k \le 10^4,0≤ai≤1060 \le a_i \le 10^6 。

我的代码:

#include<bits/stdc++.h>
using namespace std;
int n,k,a[2005],p;
int lzq(int p)
{
   int lhq,sum=0;
   for(int i=1;lhq<=2005;i++)
   {
   	lhq=i*k+p;
   	sum+=lhq;
   }
   return sum;
}
int main()
{	
   cin>>n>>k;
   for(int i=1;i<=2*n;i++)
   {
   	cin>>a[i];
   }
   for(int i=1;i<=2*n;i++)
   {
   	if(a[i]%2==1)
   	{
   		p=i%k;
   		a[i]=lzq(p)%i;
   	}
   }
   for(int i=1;i<=2*n;i++)
   {
   	cout<<a[i]<<" ";
   }
   return 0;
}

测评结果:第一行那一个点以及2、3行所有点WA,剩余的点UKE

我觉得自己对于“所有第 p 象限数的和”的理解可能有误

2023/7/14 21:14
加载中...