排位赛(三)| K题
【题目描述】
一元多项式求导,问求导后系数;
【输入格式】
第一行输入n 、k(1 <= n, k <= 100),表示多项式次数和求导次数;
第二行输入 n+1 个非负数,空格间隔,分别表示 n、n - 1、n - 2、...、0次项系数(系数范围0 - 100);
【输出格式】
输出一行(n + 1)个数,先输出所有的0,再一次输出n - k、n - k - 1、...、0次项的系数;
由于系数可能很大,请对每个系数取模 998244353 后输出;
【解题思路】
(1)要弄清题目含义,明确输入输出顺序及含义,不要乱存;
(2)解题的时候固执的将各项系数同数组下标绑定在一起,虽然二者有联系,但捆绑限制思路,并不好操作;
(3)题目已经暗示数据会很大,那就要无所不用其极地减小可能的错误(具体方法如下);
【错误代码】
1 #include <iostream> 2 3 using namespace std; 4 5 typedef long long ll; 6 7 const int N = 110; 8 9 ll a[N]; 10 ll an[N]; 11 12 int main() 13 { 14 int n, k; 15 scanf("%d%d", &n, &k); 16 17 for(int i = n; i >= 0; i --) scanf("%lld", &a[i]); 18 19 for (int i = 0; i <= n - k; i ++) 20 { 21 ll x = 1; 22 for (int j = 0; j < k; j ++) x *= (n - i - j); 23 an[i] = a[n - i] * x; 24 } 25 26 for (int i = 0; i < k; i ++) printf("0 "); 27 for (int i = 0; i <= n - k; i ++) printf("%lld ", an[i] % 998244353); 28 29 return 0; 30 }
【正确代码】
1 #include <iostream> 2 3 using namespace std; 4 5 typedef long long ll; 6 7 const int N = 110; 8 9 ll a[N]; 10 ll an[N]; 11 12 int main() 13 { 14 int n, k; 15 scanf("%d%d", &n, &k); 16 17 for(int i = n; i >= 0; i --) scanf("%lld", &a[i]); 18 19 for (int i = 0; i <= n - k; i ++) 20 { 21 ll x = 1; 22 for (int j = 0; j < k; j ++) x = x * (ll)(n - i - j) % 998244353; //改进点【1】 23 an[i] = a[n - i] * x % 998244353; //改进点【2】 24 } 25 26 for (int i = 0; i < k; i ++) printf("0 "); 27 for (int i = 0; i <= n - k; i ++) printf("%lld ", an[i] % 998244353); 28 29 return 0; 30 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架