SCAU 8629 热身游戏(高精度)
8629 热身游戏
时间限制:500MS 内存限制:1000K 提交次数:2 通过次数:1
题型: 编程题 语言: 无限制
Description
ACM 程序设计竞赛是一项激励人心的竞赛,除了考验大家的编程功底,更多的是考验大家的思维以 及数学运算能力。开赛前15分钟,我们华农的某队开始了以下对话: ipc:“我们玩接龙热一下身吧!免得一会没睡醒。” Arokenda:“好啊!没问题!怎么玩?” ipc:“我先写两个数,然后你我轮流接着已经写好的数列继续写数,每人写1 个数。接龙的规则就是, 下一个数是前两个数的和。” Arokenda:“这还不简单!不就是Fibonacci数列嘛。绝对秒杀啦!” 此时,ipc 开始写数:1、3。居然不是Fibonacci 数列!下一个就是4 啦!接着数列成型了:1、3、 4、7、11、18……一直写了N 项,ipc 觉得热身还不够。于是他忽然说了句:“求前N 项和怎么样?”两 个人顿时“卡”了一下…… 若ipc写出数列的前两项以及项数,你能算出来吗?
Input
输入一个整数T(T<=20),表示ipc写了T个数列。 接下来T行, 每行三个整数, 分别为a1,a2,n , 分别表示该数列的前两项和项数。其中0<a1,a2,n<=1000
Output
每组数据输出一行,该数列的前n项和sum(n)。
Sample Input
3 1 2 15 1 1 10 2 2 10
Sample Output
2582 143 286
Hint
Source
朱伟琛
Provider
admin
#include<stdio.h> #include<string.h> int main() { int T, n1[1000], n2[1000], n[1000], m[1000],temp, e, m1len, m2len, i, j, sum; char m1[1000], m2[1000]; scanf("%d", &T); while(T--) { memset(m1, 0, sizeof(m1)); memset(m2, 0, sizeof(m2)); memset(m, 0, sizeof(m)); memset(n1, 0, sizeof(n1)); memset(n2, 0, sizeof(n2)); memset(n, 0, sizeof(n)); scanf("%s%s%d", m1, m2, &sum); if(sum == 1) {printf("%s\n", m1); continue;} m1len = strlen(m1); m2len = strlen(m2); for(i=m1len-1; i>=0; --i) n[i] = n1[i] = m1[m1len-1-i]-'0'; for(i=m2len-1; i>=0; --i) n2[i] = m2[m2len-1-i]-'0'; for(i=2,e=0; i<=sum; ++i) { for(j=0; j<1000; ++j) { m[j] = n2[j]; temp = (n[j] + n2[j] + e); n[j] = temp%10; e = temp/10; } for(j=0,e=0; j<1000; ++j) { temp = (n1[j] + n2[j] + e); n2[j] = temp%10; e = temp/10; } for(j=0; j<1000; ++j) n1[j] = m[j]; } for(j=999; !n[j] && j>0; --j); for(; j>=0; --j) printf("%d", n[j]); printf("\n"); } return 0; }
解题报告:
#高精度#
建立在Fabionacci上,进行大数相加的运算。
输入[ 1 1 100]用unsigned long long 已经不能满足,更何况是[1000 1000 1000],经过多次的联系后,改变了以往的小心翼翼计算字符串长度而频繁用strlen函数,这
次索性开大数组,很快就过了,不然要在整型数组和字符数组之间转换,会浪费较多的时间(只因为strlen)

更多内容请关注个人微信公众号 物役记 (微信号:materialchains)
作者:雪影蓝枫
本文版权归作者和博客园共有,欢迎转载,未经作者同意须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?