一、上机打卡1.1 题目输入一个正整数n输出n!的值。其中n!1*2*3*…*n。n!可能很大而计算机能表示的整数范围有限需要使用高精度计算的方法。参考算法使用一个数组A来表示一个大整数aA[0]表示a的个位A[1]表示a的十位依次类推。将a乘以一个整数k变为将数组A的每一个元素都乘以k请注意处理相应的进位。首先将a设为1然后乘2乘3当乘到n时即得到了n!的值。输入包含一个正整数nn1000。输出n!的准确值。输入范例10输出范例36288001.2 总结这道题目要求计算n的阶乘由于n最大可以达到1000阶乘的结果会非常大远远超过普通整数类型的表示范围因此需要使用高精度计算的方法。我们可以使用一个数组来存储大整数的每一位其中数组的第0位存储个位第1位存储十位依次类推。算法从1开始依次乘以2、乘以3一直乘到n每次乘法都要处理进位。具体实现时我们先初始化数组的第0位为1表示初始值1然后进行n-1次乘法操作。在每次乘法中将数组的每一位都乘以当前的乘数加上来自低位的进位得到的结果中个位保留在当前位十位及以上的部分作为进位传递到更高位。当处理完数组当前长度的所有位后如果还有进位则继续向高位扩展数组长度直到进位处理完毕。最后从数组的最高位开始倒序输出就得到了n!的准确值。这种方法通过数组模拟了手工计算乘法的过程能够准确计算出大数的阶乘。1.3 代码#include iostream using namespace std; int main() { int n; cin n; // 初始化数组10000位足够存储1000!的结果 int a[10000] {0}; a[0] 1; // 初始值为1 int len 1; // 当前数字的长度 // 从2乘到n for (int i 2; i n; i) { int carry 0; // 进位 // 每一位乘以i for (int j 0; j len; j) { int temp a[j] * i carry; a[j] temp % 10; // 当前位 carry temp / 10; // 进位 } // 处理剩余的进位 while (carry 0) { a[len] carry % 10; carry / 10; len; } } // 从最高位到最低位输出 for (int i len - 1; i 0; i--) { cout a[i]; } cout endl; return 0; }二、翻译打卡Transformer模型是基于注意力机制的神经网络架构已经在自然语言处理领域取得了伟大的成就。不像传统的串行神经网络Transformer不依靠一步一步的序列处理。相反它使用自注意力机制来处理整个的序列。这种架构不仅仅提升了模型处理并行计算的能力还能够使其更高效地捕捉长范围的依赖。在机器翻译任务中Transformer模型可以动态地根据句子中不同单词的关系来分配注意力权重因此产生更准确的翻译结果。除此之外Transformer架构已经广泛都被应用在例如文本生成语音识别甚至图像处理这样的任务中。最近几年许多大规模的预训练语言模型已经在Transformer架构之上被建造出来它们显著地加粗了人工智能技术的发展。
Day49:2026年3月17日打卡
一、上机打卡1.1 题目输入一个正整数n输出n!的值。其中n!1*2*3*…*n。n!可能很大而计算机能表示的整数范围有限需要使用高精度计算的方法。参考算法使用一个数组A来表示一个大整数aA[0]表示a的个位A[1]表示a的十位依次类推。将a乘以一个整数k变为将数组A的每一个元素都乘以k请注意处理相应的进位。首先将a设为1然后乘2乘3当乘到n时即得到了n!的值。输入包含一个正整数nn1000。输出n!的准确值。输入范例10输出范例36288001.2 总结这道题目要求计算n的阶乘由于n最大可以达到1000阶乘的结果会非常大远远超过普通整数类型的表示范围因此需要使用高精度计算的方法。我们可以使用一个数组来存储大整数的每一位其中数组的第0位存储个位第1位存储十位依次类推。算法从1开始依次乘以2、乘以3一直乘到n每次乘法都要处理进位。具体实现时我们先初始化数组的第0位为1表示初始值1然后进行n-1次乘法操作。在每次乘法中将数组的每一位都乘以当前的乘数加上来自低位的进位得到的结果中个位保留在当前位十位及以上的部分作为进位传递到更高位。当处理完数组当前长度的所有位后如果还有进位则继续向高位扩展数组长度直到进位处理完毕。最后从数组的最高位开始倒序输出就得到了n!的准确值。这种方法通过数组模拟了手工计算乘法的过程能够准确计算出大数的阶乘。1.3 代码#include iostream using namespace std; int main() { int n; cin n; // 初始化数组10000位足够存储1000!的结果 int a[10000] {0}; a[0] 1; // 初始值为1 int len 1; // 当前数字的长度 // 从2乘到n for (int i 2; i n; i) { int carry 0; // 进位 // 每一位乘以i for (int j 0; j len; j) { int temp a[j] * i carry; a[j] temp % 10; // 当前位 carry temp / 10; // 进位 } // 处理剩余的进位 while (carry 0) { a[len] carry % 10; carry / 10; len; } } // 从最高位到最低位输出 for (int i len - 1; i 0; i--) { cout a[i]; } cout endl; return 0; }二、翻译打卡Transformer模型是基于注意力机制的神经网络架构已经在自然语言处理领域取得了伟大的成就。不像传统的串行神经网络Transformer不依靠一步一步的序列处理。相反它使用自注意力机制来处理整个的序列。这种架构不仅仅提升了模型处理并行计算的能力还能够使其更高效地捕捉长范围的依赖。在机器翻译任务中Transformer模型可以动态地根据句子中不同单词的关系来分配注意力权重因此产生更准确的翻译结果。除此之外Transformer架构已经广泛都被应用在例如文本生成语音识别甚至图像处理这样的任务中。最近几年许多大规模的预训练语言模型已经在Transformer架构之上被建造出来它们显著地加粗了人工智能技术的发展。