“九韶杯“记录

本文详述了在‘九韶杯’河科院程序设计竞赛中遇到的问题及解决方案,包括对6的个数处理、C++字符串输入的注意事项,以及最大公因数和质数函数的实现细节。通过实例代码展示了如何正确处理这些问题,为ACM/NOI/CSP等算法编程比赛提供高难度练习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“九韶杯”河科院程序设计协会第一届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)

此篇文章记录一些小但是非常致命的细节。

首先是第一题,6的个数。

问题是出在0%6也是0,没有直接让他个位数字直接等于6.

其次是字符串的输入问题

c++在输入时,如果在一行里面有空格,系统会默认这是两个字符串,这里的解决方式是,首先在输入的时候用getline函数,其次输入时要加getchar()

题解如下

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int n;
string a[10005];
int main()
{
    cin >> n;
    getchar();
    for (int i = 1; i <= n; i++)
    {
        getline(cin, a[i]);
    } 
    int ans = 0;
    for (int i = 1; i <= n; i++)
    {
        int p = a[i].size();
        for (int j = 0; j < p - 3; j++)
        {
            if (a[i][j] == '@' && a[i][j + 1] == 'w' && a[i][j + 2] == 'y' && a[i][j + 3] == 'k')
            {
                ans++;
                break;
            }
        }
    }
    cout << ans;
    return 0;
}

求最大公因数的写法:

int gcd(ll a, ll b)
{
    return b ? gcd(b, a % b) : a;
}
在使用的时候直接引用就好了

在写质数函数的时候有个细节,要不然也不能够ac

int prime(int n)
{
	if(n<2)
	return 0;//就是这两行,不写就过不来了
	for(ll i=2;i*i<=n;i++)
	{
		if(n%i==0)
		{
			return 0;
		}
	}
	return 1;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值