第六届校内赛B组

1.
输入一个字符串,求它包含多少个单词。单词间以一个或者多个空格分开。
第一个单词前,最后一个单词后也可能有0到多个空格。
比如:” abc xyz” 包含两个单词,”ab c xyz ” 包含3个单词。

如下的程序解决了这个问题,请填写划线部分缺失的代码。

注意:只填写划线部分的代码,不要填写任何多余的内容。比如已经存在的小括号,注释或说明文字等。

int get_word_num(char* buf)
{
    int n = 0;   
    int tag = 1; 
    char* p = buf;

    for(;*p!=0 && *p!=13 && *p!=10;p++){
        if(*p==' ' && tag==0) tag=1;
        if(*p!=' ' && tag==1){ n++; tag=0; }   //填空
    }

    return n;
}

int main()
{
    char buf[1000];
    fgets(buf,1000,stdin);

    printf("%d\n", get_word_num(buf));
    return 0;
}

2.
1/1 + 1/2 + 1/3 + 1/4 + … 在数学上称为调和级数。

它是发散的,也就是说,只要加上足够多的项,就可以得到任意大的数字。
但是,它发散的很慢:

前1项和达到 1.0
前4项和才超过 2.0
前83项的和才超过 5.0

那么,请你计算一下,要加多少项,才能使得和达到或超过 15.0 呢?

请填写这个整数。

注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。

#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main()
{
    int num = 1;
    double total = 0;
    for(total = 0; total < 15.0; num++)
    {
        total += 1.0/num;
    }
    printf("%d\n",(int)num);  //1835422
    return 0;
}

3.
如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?

显然,这个值是介于2和3之间的一个数字。

请把x的值计算到小数后6位(四舍五入),并填写这个小数值。

注意:只填写一个小数,不要写任何多余的符号或说明。

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    double a = 2.0, b = 3.0,x = (a + b)/2.0;
    while(fabs(pow(x,x)-10) >= 1e-10)
    {
        if(pow(x,x) < 10)
            a = x;
        else
            b = x;
        x = (a + b)/2.0;
    }
    cout << x << endl;
    return 0;
}

4.

今有7对数字:两个1,两个2,两个3,…两个7,把它们排成一行。
要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:

17126425374635

当然,如果把它倒过来,也是符合要求的。

请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。

注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。

5.
勾股定理,西方称为毕达哥拉斯定理,它所对应的三角形现在称为:直角三角形。

已知直角三角形的斜边是某个整数,并且要求另外两条边也必须是整数。

求满足这个条件的不同直角三角形的个数。

【数据格式】
输入一个整数 n (0

#include <iostream>

using namespace std;

int main()
{
    int n,count = 0;
    cin >> n;
    for(int i = 1; i < n; i++)
    {
        for(int j = 1; j < n; j++)
        {
            if(i*i+j*j == n*n)
                count++;
            else if(i*i+j*j > n*n)
                break;
        }
    }
    cout << count/2 << endl;
    return 0;
}
### 第十二届蓝桥杯 Java 研究生信息 #### 比概述 第十二届蓝桥杯全国软件和信息技术专业人才大于2021年举办,旨在促进高校计算机教育的发展,提高大学生的编程能力和创新意识。该事分为多个阶段,包括校内选拔、省级竞以及全国总决。 #### 事安排 - **报名时间**:通常在每年秋季开放注册通道。 - **初(省)**:一般在次年的3月至4月间举行。 - **决**:大约在5月底至6月初进行。 对于Java研究生而言,比形式主要为上机编程测试,选手需独立完成若干道算法设计与实现题目,在规定时间内提交最优解法。 #### 题目特点 根据以往的经验,蓝桥杯Java研究生的试题难度较大,涵盖了广泛的知识领域,如数据结构、算法分析、操作系统原理等。具体到第十二届的情况: - **基础题型**:涉及字符串处理、数操作等方面的基础知识点。 - **中级挑战**:考察动态规划、贪心策略的应用能力。 - **高级难题**:可能涉及到图论模型建立、复杂度优化等问题求解技巧[^1]。 ```java // 示例代码展示如何解决一道典型的蓝桥杯题目——计算斐波那契数列前N项之和 public class FibonacciSum { public static long fib(int n) { if (n <= 1) return n; long a = 0, b = 1, c; for (int i = 2; i <= n; ++i) { c = a + b; a = b; b = c; } return b; } public static void main(String[] args) { int N = Integer.parseInt(args[0]); System.out.println(fib(N)); } } ``` #### 参建议 为了更好地准备此类竞,参者应当注重以下几个方面: - 加强基础知识的学习,特别是针对常见算法的理解及其应用场景; - 多参与模拟训练,熟悉不同类型的考题模式并积累实战经验; - 关注官方发布的历年真题解析资料,从中汲取灵感找到适合自己的复习方法;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值