代码问题:

整除的尾数

作者: Turbo
时间限制: 1s
章节: 函数
问题描述

一个整数,只知道前几位为a,不知道末二位,被另一个整数b除尽了(即没有余数),那么该数的末二位该是什么呢?

程序已完成主体框架,请完成以下函数getResult的函数体。

getResult的功能为:

    根据传入的参数a和b,求出所有符合条件的末二位(尾数)放入数组weishu中,数组weishu按升序排列。函数返回符合条件的尾数个数。

部分代码如下

#include <stdio.h>

int getResult(int a, int b, int weishu[])

{

    //请完成此函数

}

int main()

{

    int a, b, weishu[100],count,i;

    scanf("%d%d", &a, &b);

    count=getResult(a,b,weishu);

    for(i=0; i<count; i++)

    {

        if (i>0)

            printf(" ");

        printf("%02d", weishu[i]);

    }

    printf("\n");

    return 0;

}

输入说明

输入两个整数a,b(0<a<10000, 10<b<100)

输出说明

将满足条件的所有尾数在一行内输出,格式见范例。两个尾数之间空一格,行首与行尾没有空格。

代码如下:

#include <stdio.h>

int getResult(int a, int b, int weishu[])
{
    int count = 0;  

    for (int x = 0; x < 100; x++)
    {

        long long full_num = (long long)a * 100 + x;

        if (full_num % b == 0)
        {
            weishu[count++] = x; 
        }
    }
    return count;  
}

int main()
{
    int a, b, weishu[100], count, i;
    scanf("%d%d", &a, &b);
    count = getResult(a, b, weishu);
    for (i = 0; i < count; i++)
    {
        if (i > 0)
            printf(" ");
        printf("%02d", weishu[i]);  
    }
    printf("\n");
    return 0;
}

黑色星期五

作者: xxx

时间限制: 1s

章节: 一维数组

问题描述

13号又是星期五是一个不寻常的日子吗? 13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13 日落在星期一,星期二......星期日的次数.这个测试从1900年1月1日到 1900+n-1年12月31日.n是一个非负数且不大于400.

这里有一些你要知道的: 1900年1月1日是星期一. 4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.

输入说明

一个整数n(1<= n <= 400).

输出说明

七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.

代码如下:

#include <stdio.h>

// 判断是否为闰年
int isLeapYear(int year) {
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        return 1;
    }
    return 0;
}

int main() {
    int n;
    scanf("%d", &n);
    
    // 每个月的天数(平年)
    int month_days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    // 统计数组:索引0=星期六,1=星期日,2=星期一,3=星期二,4=星期三,5=星期四,6=星期五
    int count[7] = {0};
    // 1900年1月1日是星期一(对应星期索引2),先计算1900年1月13日的星期
    int current_week = (1 + 12) % 7; // 1月1日是星期一(1),加12天到13号
    
    // 遍历1900到1900+n-1年
    for (int year = 1900; year < 1900 + n; year++) {
        // 遍历12个月
        for (int month = 0; month < 12; month++) {
            // 计算当前月13号的星期对应的统计索引
            int idx;
            if (current_week == 6) {
                idx = 0; // 星期六
            } else if (current_week == 0) {
                idx = 1; // 星期日
            } else {
                idx = current_week; // 星期一(2)~星期五(6)
            }
            count[idx]++;
            
            // 计算下一个月13号的星期:加上当前月的天数,取模7
            int days = month_days[month];
            // 处理闰年2月
            if (month == 1 && isLeapYear(year)) {
                days = 29;
            }
            current_week = (current_week + days) % 7;
        }
    }
    
    // 输出结果:星期六、星期日、星期一、星期二、星期三、星期四、星期五
    for (int i = 0; i < 7; i++) {
        if (i > 0) {
            printf(" ");
        }
        printf("%d", count[i]);
    }
    printf("\n");
    
    return 0;
}

作者: ZhuKai

时间限制: 10s

章节: 一维数组

问题描述

明明是一家地铁建设公司的职员,他负责地铁线路的规划和设计。一次,明明要在一条长L的马路上建造若干个地铁车站。

这条马路有一个特点,马路上种了一排树,每两棵相邻的树之间的间隔都是一米。

如果把马路看成一个数轴,马路的一端在数轴0的位置,马路的另一端在L的位置,那么这些树都种在数轴的整数点上,即0,1,2,…,L上都种有一棵树。

由于要设计建造地铁站的缘故,所以需要把一些树移走,明明为了移树的方便,把地铁站的区域也建在了数轴上两个整数点之间,由于有多条地铁线路,地铁车站的区域可能会有部分的重合(重合的区域明明将来会设计成一个大型的车站,移树的时候不必考虑地铁站重合区域的问题)。

现在明明想请你帮一个忙,他把车站区域的位置告诉你,即告诉你数轴上的两个整数点,在这两个整数点之间是车站的区域,请你写一个程序,计算出把所有车站区域两点之间的树移走以后,这条马路上还剩多少棵树。

例如:马路长为10,要建造2个地铁车站,车站的区域分别是2到5和3到6,原先的马路上一共有11棵树,在2到5的位置上建车站后,需要移走4棵树,在3到6的位置上建车站后,也需要移走4棵树,但是3到6这个区域和2到5这个区域有部分重合,所以只需移走1棵树即可,这样总共移走的树是5棵,剩下的树就是6棵。

明明的问题可以归结为:给你一条马路的长度和若干个车站的位置,请你用程序计算出把树移走后,马路上还剩多少棵树。

输入说明

你写的程序要求从标准输入设备中读入测试数据作为你所写程序的输入数据。标准输入设备中有多组测试数据,每组测试数据有多行,每组测试数据的第一行有两个整数L(1≤L≤10000)和M(0≤M≤100),分别表示马路的长度和地铁车站区域的个数。接下来有M行,每行有2个整数,分别表示每一座地铁车站区域的两个坐标的。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明

对于每一组测试数据,你写的程序要求计算出一组相应的运算结果,并将每组运算结果作为你所写程序的输出数据依次写入到标准输出设备中。每组运算结果为一个整数,即把树移走后,马路上还剩下多少棵树。每组运算结果单独占一行,其行首和行尾都没有任何空格或其他任何字符,每组运算结果与其后一组运算结果之间没有任何空行或其他任何字符,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行或其他任何字符。 注:通常,显示屏为标准输出设备。

代码如下:

#include <stdio.h>
#include <string.h> // 用于memset函数

int main() {
    int L, M;
    // 多组测试数据,直到输入结束
    while (scanf("%d %d", &L, &M) != EOF) {
        // 定义数组标记树的状态:0=保留,1=移除;长度L+1(0~L)
        int tree[10001];
        // 初始化数组为0(所有树初始保留)
        memset(tree, 0, sizeof(tree));
        
        // 处理M个车站区域
        for (int i = 0; i < M; i++) {
            int start, end;
            scanf("%d %d", &start, &end);
            // 确保start <= end(防止输入顺序颠倒)
            if (start > end) {
                int temp = start;
                start = end;
                end = temp;
            }
            // 标记该区域内的树为移除
            for (int j = start; j <= end; j++) {
                tree[j] = 1;
            }
        }
        
        // 统计剩余的树的数量
        int count = 0;
        for (int i = 0; i <= L; i++) {
            if (tree[i] == 0) {
                count++;
            }
        }
        
        // 输出结果
        printf("%d\n", count);
    }
    return 0;
}

英语翻译

Unit 1   Section C

从技术角度来说,几乎任何一台计算机都可以被配置为服务器,也可执行服务器的工作。不过,像IBM和戴尔这样的计算机制造商,会提供专门用于在网络上存储和分发数据的服务器设备。这类设备大小约等于一个桌面抽屉,通常会安装在由多台服务器组成的机架中。

二. 个人计算机

个人计算机是为满足个人计算需求而设计的。这类计算机最初被称为微型计算机。个人计算机可支持多种计算应用,例如文字处理、照片编辑、电子邮件和互联网访问。

“个人计算机”(personal computer)这一术语有时会被缩写为PC。不过,PC也可以特指一类源自最初IBM PC、运行Windows软件的个人计算机。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐