C/C++每日一练(20230323)

简介: C/C++每日一练(20230323)

1. 素数求和问题


给定n(n≤100)个正整数,所有正整数均≤1000000;求其中所有素数的和。


例如:

给定序列: 2 3 4 5 6,素数和为:10

给定序列: 3 4 5 6 7, 素数和为:15

给定序列: 12 19 23 35 68 71, 素数和为: 113


输入格式:

输入为两行。第一行是一个正整数n,表示有多少个数据。第二行是n个正整数组成的序列。


输出格式:

输出一个正整数,是上述序列中所有素数之和。


出处:

https://edu.csdn.net/practice/23497452


代码:

#include <stdio.h>
int isprime(int n);
int main()
{
    int i,n,m,s=0;
    scanf("%d", &n);
    for(i=0; i<n; i++) {
        scanf("%d", &m);
        if(isprime(m)){
            s+=m;
        }
    }
    printf("%d", s);
    return 0;
}
int isprime(int n)
{
    int i;
    if(n<=1) return 0;
    for(i=2;i*i<=n;i++)
        if(n%i==0) return 0;
    return 1;
}


输入输出:

5

2 3 4 5 6

10


2. 秒数转换


输入一个秒数,转换成HH:MM:SS的格式输出。


输入样例

365

输出样例

00:06:05

出处:

https://edu.csdn.net/practice/23497453

代码:

#include <cstdio>
void print(int x)
{
    if (x == 0)
        printf("00");
    else if (x < 10)
        printf("0%d", x);
    else
        printf("%d", x);
    return;
}
int main()
{
  int n;
    scanf("%d", &n);
    int s, f, m;
  s = n / 3600;
  f = n / 60 % 60;
  m = n % 60;
    print(s);
    printf(":");
    print(f);
    printf(":");
    print(m);
    return 0;
}

输入输出:

365

00:06:05


3. 硬币重量最轻问题



设有n种不同面值的硬币,第i种硬币的币值是Vi(其中V1=1),重量是Wi,i=1,2,...n且现在购买某种总币值为y的商品,需要用这些硬币付款,如果每种钱币使用的个数不限,那么如何选择付款的方法使得付出钱币的总重量最轻?使用动态规划设计策略设计一个求解该问题的算法。假设问题的输入实例是:

n=4

V1=1, V2=4, V3=6, V4=8

W1=1, W2=2,W3=4,W4=6

Y=12

要求输出优化函数表和标记函数表、以及硬币支付方式。

出处:

https://edu.csdn.net/practice/23497454

代码:



#include <stdio.h>
void strcpy(int *a, int *b, int Y)
{
    for (int i = 0; i <= Y; i++)
        *(a + i) = *(b + i);
}
void solve()
{
    int n;
    scanf("%d", &n);
    int type[n], weight[n], Y, i, j, k;
    for (i = 0; i < n; i++)
        scanf("%d", &type[i]);
    for (i = 0; i < n; i++)
        scanf("%d", &weight[i]);
    scanf("%d", &Y);
    int Min[Y + 1], Min_Path[Y + 1], path[n][Y + 1];
    for (i = 0; i <= Y; i++)
        Min[i] = 9999;
    Min[0] = 0;
    printf("\n");
    for (j = 0; j < n; j++)
    {
    for (i = type[j]; i <= Y; i++)
        if (Min[i] > Min[i - type[j]] + weight[j])
        {
            Min_Path[i] = type[j];
            Min[i] = Min[i - type[j]] + weight[j];
        }
        for (k = 1; k <= Y; k++)
            printf("%-3d", Min[k]);
        printf("\n");
        strcpy(path[j], Min_Path, Y);
    }
    printf("\n");
    for (i = 0; i < n; i++)
    {
        for (j = 1; j <= Y; j++)
            printf("%-3d", path[i][j]);
        printf("\n");
    }
    int y = Y;
    printf("\n支付方式:");
    while (y)
    {
        printf("%d ", Min_Path[y]);
        y -= Min_Path[y];
    }
    printf("\n总重量:%d\n", Min[Y]);
}
int main()
{
    solve();
    return 1;
}


输入输出:

4

1 4 6 8

1 2 4 6

12

1  2  3  4  5  6  7  8  9  10 11 12

1  2  3  2  3  4  5  4  5  6  7  6

1  2  3  2  3  4  5  4  5  6  7  6

1  2  3  2  3  4  5  4  5  6  7  6

1  1  1  1  1  1  1  1  1  1  1  1

1  1  1  4  4  4  4  4  4  4  4  4

1  1  1  4  4  4  4  4  4  4  4  4

1  1  1  4  4  4  4  4  4  4  4  4


支付方式:4 4 4

总重量:6



目录
相关文章
|
2月前
|
Linux 监控 Ubuntu
Linux 终端操作命令(1)
Linux 终端操作命令(1)
71 1
Linux 终端操作命令(1)
|
2月前
|
算法 Java Go
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
30 1
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
|
2月前
|
Linux 监控 Shell
Linux 终端命令之文件浏览(4) head, tail
Linux 终端命令之文件浏览(4) head, tail
35 0
Linux 终端命令之文件浏览(4) head, tail
|
2月前
|
Shell Linux 机器学习/深度学习
Linux 终端操作命令(3)内部命令用法
Linux 终端操作命令(3)内部命令用法
53 0
Linux 终端操作命令(3)内部命令用法
|
2月前
|
Python Linux Ubuntu
Linux系统部署Python语言开发运行环境
Linux系统部署Python语言开发运行环境
127 0
Linux系统部署Python语言开发运行环境
|
2月前
|
Go Unix 开发者
Go语言time库,时间和日期相关的操作方法
Go语言time库,时间和日期相关的操作方法
66 0
Go语言time库,时间和日期相关的操作方法
|
2月前
|
C++ 存储 Serverless
力扣C++|一题多解之数学题专场(2)
力扣C++|一题多解之数学题专场(2)
33 0
力扣C++|一题多解之数学题专场(2)
|
2月前
|
Go 机器学习/深度学习 Rust
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
53 0
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
|
2月前
|
Java Go C++
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
41 0
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
|
2月前
|
Java Go C++
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
32 0
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort