折半查找(改错)
作者: Turbo
时间限制: 1s
章节: 函数
问题描述
由N个有序整数组成的数列已放在一维数组中,给定程序中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。
折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中;反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
#define N 100
int n;
/************found************/
void fun(int a[], int m) {
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (m < a[mid])
high = mid - 1;
/************found************/
else If(m >= a[mid])
low = mid + 1;
else
return (mid);
}
return (-1);
}
int main() {
int i, a[N], k, m;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", a + i);
scanf("%d", &m);
k = fun(a, m);
if (k >= 0)
printf("m=%d,index=%d\n", m, k);
else
printf("Not found!\n");
return 0;
}
cpp
#include <stdio.h>
#define N 100
int n;
/************found************/
int fun(int a[], int m) {
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (m < a[mid])
high = mid - 1;
/************found************/
else if(m > a[mid])
low = mid + 1;
else
return (mid);
}
return (-1);
}
int main() {
int i, a[N], k, m;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", a + i);
scanf("%d", &m);
k = fun(a, m);
if (k >= 0)
printf("m=%d,index=%d\n", m, k);
else
printf("Not found!\n");
return 0;
}
三个数的最小公倍数(改错)
作者: Turbo
时间限制: 1s
章节: 函数
问题描述
给定程序中函数fun的功能是:求三个数的最小公倍数。
例如,给主函数中的变量x1、x2、x3分别输入15 11 2,则输出结果应当是:330。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h>
/************found************/
fun(int x, y, z) {
int j, t, n, m;
j = 1 ;
t = j % x;
m = j % y ;
n = j % z;
while (t != 0 || m != 0 || n != 0) {
j = j + 1;
t = j % x;
m = j % y;
n = j % z;
}
/************found************/
return i;
}
int main() {
int x1, x2, x3, j ;
scanf("%d%d%d", &x1, &x2, &x3);
j = fun(x1, x2, x3);
printf("%d", j);
return 0;
}
输入说明
输入三个正整数 x1, x2, x3
输出说明
输出一个正整数
cpp
#include <stdio.h>
/************found************/
int fun(int x, int y,int z) {
int j, t, n, m;
j = 1 ;
t = j % x;
m = j % y ;
n = j % z;
while (t != 0 || m != 0 || n != 0) {
j = j + 1;
t = j % x;
m = j % y;
n = j % z;
}
/************found************/
return j;
}
int main() {
int x1, x2, x3, j ;
scanf("%d%d%d", &x1, &x2, &x3);
j = fun(x1, x2, x3);
printf("%d", j);
return 0;
}
数列平方根和(改错)
作者: Turbo
时间限制: 1s
章节: 函数
问题描述
已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。
例如,当n=10时,程序的输出结果应为:23.197745。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#include <math.h>
/************found************/
fun(int n) {
double sum, s0, s1, s2, s;
int k;
sum = 1.0;
if (n <= 2)
sum = 0.0;
s0 = 0.0;
s1 = 0.0;
s2 = 1.0;
for (k = 4; k <= n; k++) {
s = s0 + s1 + s2;
sum += sqrt(s);
s0 = s1;
s1 = s2;
s2 = s;
}
/************found************/
return sum
}
int main () {
int n;
scanf("%d", &n);
printf("%f", fun(n));
return 0;
}
输入说明
输入一个整数n
输出说明
输出fun函数的返回值
cpp
#include <stdio.h>
#include <math.h>
/************found************/
double fun(int n) {
double sum, s0, s1, s2, s;
int k;
sum = 1.0;
if (n <= 2)
sum = 0.0;
s0 = 0.0;
s1 = 0.0;
s2 = 1.0;
for (k = 4; k <= n; k++) {
s = s0 + s1 + s2;
sum += sqrt(s);
s0 = s1;
s1 = s2;
s2 = s;
}
/************found************/
return sum;
}
int main () {
int n;
scanf("%d", &n);
printf("%f", fun(n));
return 0;
}
进制转换(改错)
作者: Turbo
时间限制: 1s
章节: 一维数组
问题描述
给定程序的功能是:将十进制正整数m转换成k(2≤k≤9)进制数,并按高位到低位顺序输出。
例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。
请改正 程序 中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
int main()
{
int m, k;
int aa[20] = {0}, i;
scanf("%d%d", &m, &k);
for (i = 0; m; i++)
{
/**********found**********/
aa[i] = m / k;
m /= k;
}
/**********found**********/
for (; i >= 0; i--)
printf("%d", aa[i]);
return 0;
}
输入说明
输入两个正整数m,k
输出说明
输出m的k进制表示
cpp
#include <stdio.h>
int main()
{
int m, k;
int aa[20] = {0}, i;
scanf("%d%d", &m, &k);
for (i = 0; m; i++)
{
/**********found**********/
aa[i] = m % k;
m /= k;
}
/**********found**********/
for (i--; i >= 0; i--)
printf("%d", aa[i]);
return 0;
}
英语翻译
Pretrained models have become a dominant paradigm in modern artificial intelligence. These models are first trained on large-scale datasets to learn general representations and then fine-tuned on specific downstream tasks. This approach significantly reduces the need for labeled data and improves model performance. In natural language processing, models like BERT and GPT are pre-trained using self-supervised learning objectives. Fine-tuning allows these models to adapt to tasks such as text classification, sentiment analysis, and question answering. Transfer learning plays a crucial role in this process by leveraging knowledge from one domain to another. Despite their effectiveness, pretrained models require substantial computational resources, raising concerns about efficiency and environmental impact.
预训练模型已成为现代人工智能领域占主导地位的范式。这些模型首先通过大规模数据集进行训练,以学习通用表示,然后针对特定下游任务进行微调。这种方法显著降低了对标注数据的依赖,并提高了模型性能。在自然语言处理领域,像BERT和GPT这样的模型通过自监督学习目标进行预训练。微调使这些模型能够适应文本分类、情感分析和问题回答等任务。迁移学习在这一过程中扮演着至关重要的角色,它能够利用一个领域的知识来促进另一领域的学习。尽管预训练模型效果显著,但它们需要大量的计算资源,这引发了关于效率及环境影响方面的担忧。
representations 代表
downstream tasks 下游任务
self-supervised learning objectives自监督学习目标
Transfer learning 迁移学习
leveraging 利用