这个c语言编程题如何求解?如果非要用两个函数,则:
sum1函数可以用等差数列求和公式降低时间复杂度
时间复杂度O(n)
其实sum2本身就有求和公式:
1+(1+2)+...+(1+2+...+n)=n(n+1)(n+2)÷6
时间复杂度O(1)
详见代码
#includebits/stdc++.h
#includechrono
#define int unsigned long long
using namespace std;
using namespace chrono;
int n;
//法1(O(n^2))
int sum11(int k){
int s=0;
for(int i=1;i=k;i++) s+=i;
return s;
}
int sum12(int n){
int s2=0;
for(int i=1;i=n;i++) s2+=sum11(i);
return s2;
}
//法2(O(n))
int sum21(int k){
return (1+k)*k/2;
}
【c语言函数编程题怎么做 c语言函数编程题怎么做出来的】int sum22(int n){
int s2=0;
for(int i=1;i=n;i++) s2+=sum21(i);
return s2;
}
//法3
int sum32(int n){
return n*(n+1)*(n+2)/6;
}
signed main(){
cinn;
auto start1=system_clock::now();
cout"法1:"sum12(n);
auto end1=system_clock::now();
auto duration1=duration_castmicroseconds(end1-start1);
cout" 用时"double(duration1.count())*microseconds::period::num/microseconds::period::den"秒"endl;
auto start2=system_clock::now();
cout"法2:"sum22(n);
auto end2=system_clock::now();
auto duration2=duration_castmicroseconds(end2-start2);
cout" 用时"double(duration2.count())*microseconds::period::num/microseconds::period::den"秒"endl;
auto start3=system_clock::now();
cout"法3:"sum32(n);
auto end3=system_clock::now();
auto duration3=duration_castmicroseconds(end3-start3);
cout" 用时"double(duration3.count())*microseconds::period::num/microseconds::period::den"秒"endl;
return 0;
}
运行结果:
80000
法1:85336533360000 用时6.85699秒
法2:85336533360000 用时0秒
法3:85336533360000 用时0秒
------
望您采纳,谢谢
这个C语言函数题怎么做?# include stdio.h
# include math.h
int main(void)
{
//把三个系数保存到计算机中
int a = 1;//=不表示相等,表示赋值
int b = 5;
int c = 6;
double delta; //delt存放c语言函数编程题怎么做的是 b*b - 4*a*c
double x1; //存放一元二次方程c语言函数编程题怎么做的其中一个解
double x2; //存放一元二次方程的其中一个解
delta = b*b - 4*a*c;
if (delta0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("该一元二次方程有两个解, x1 = %f, x2 = %f\n", x1, x2);
}
else if (delta == 0)
{
x1 = (-b) / (2*a);
x2 = x1;//右边赋给左边
printf("该一元二次方程有一个唯一解, x1 = x2 = %f\n", x1);
}
else
{
printf("无解\n");
}
return 0;
}
C语言编程题目?下面是一个可以利用指针将两个字符串连接起来的 C 语言程序 。该程序定义了一个子函数 `StrCat`,用于将两个字符串连接起来,并返回连接后的结果 。主函数中 , 我们先从标准输入读入两个字符串,然后根据它们的长度调用 `StrCat` 函数,将它们连接起来并输出结果 。
```c
#include stdio.h
#include string.h
#define MAX_LEN 100
char* StrCat(char* s, char* t);
int main() {
char s1[MAX_LEN], s2[MAX_LEN];
// 从标准输入读入两个字符串
printf("请输入第一个字符串:");
fgets(s1, MAX_LEN, stdin);
printf("请输入第二个字符串:");
fgets(s2, MAX_LEN, stdin);
// 将短的字符串放在前面 , 然后连接两个字符串
if (strlen(s1)strlen(s2)) {
char *t = s1;
s1 = s2;
推荐阅读
- 桌面游戏小程序怎么加字,小程序游戏怎么改名字
- sqlserver设置空格,sql语句设置空值
- 电视顶部挂什么,电视顶部挂什么好看
- vb.net摄像头答卷 摄像头考试怎么找答案
- html5字段间隔,html5行间距
- 瓯北小规模代理会计平台,小规模代理记账费用一般多少钱一个月
- 关于vb.net事件调用的信息
- jquery判断以什么开头,判断jquery对象是否存在
- 电脑进入u盘怎么启动系统安装系统安装系统,电脑怎么进入u盘系统重装