首页 > 其他分享 >2023短学期0913题解

2023短学期0913题解

时间:2023-09-13 12:45:32浏览次数:32  
标签:input int 题解 二进制 2023 字符串 0913 输入 string

将字符串作为输入流来处理(提取单词)

【C系列4.7】函数训练之暗号

Description

  cyn小朋友今天参加了小学举办的侦探活动,她的任务是从暗号纸条的内容上找出特工Q给出的所有的暗号(即Q开头的单词)

Input

  输入一串含有空格的字符串,字符串的长度不超过300。

Output

  按顺序每行输出一个找到的首字母为Q或q的单词。

Samples

input

Queen and quick run from this site

output

Queen
quick

Solution

  istringstream 是 C++ 标准库中的一个类,它用于将字符串作为输入流来处理。在上述代码中,我们首先使用 std::getline 函数从标准输入中读取一行字符串,并将它存储在 input 变量中。
  然后,我们创建了一个 istringstream 对象,名为 iss,并将之前读取的字符串 input 传递给它。接下来,我们可以使用 iss 就像处理标准输入一样,从中逐个提取单词。
  这个做法的好处是,它允许我们使用标准的输入流操作来处理输入的字符串,就像处理标准输入一样,这样我们可以使用 >> 操作符逐个提取单词,使代码更加清晰和简洁。
  所以,istringstream 允许我们将一个字符串作为输入流来处理,方便地从中提取数据。

#include<bits/stdc++.h>
using namespace std;

int main() {
    string input;
    getline(cin, input);
    istringstream iss(input);
    string word;
    while (iss >> word) {
        if (word[0] == 'Q' || word[0] == 'q') {
            cout << word << endl;
        }
    }
    return 0;
}

二进制加法

Description

计算机使用的是二进制,和十进制不同的是:二进制运算“逢二进一”。下面举一个二进制加法的运算实例:

 11101
+ 110
————
100011

1所在的位置:

6、2、1

你的任务是:对于任意的两个正的二进制数,求它们和中“1”所在的位置。

Input

有多组测试数据,每组测试数据共两行:

第一行:二进制的加数A,总长度<=200。

第二行:二进制的加数B,总长度<=200。

Output

输出二进制数A+B中“1”所在的位置,位置排序为从左到右:N、N-1、N-2...1,数据之间用空格分隔,行末没有多余的空格。

温馨提醒:

输出小技巧。如何在不确定何时为第一次输出,也不知道何时为最后一次输出时控制末尾的空格,使程序不会在末尾多输出一个空格导致程序错误。下面是一个例子:

int i, hasPrinted;
hasPrinted = 0;
for (i=0; i<n; i++) {
    if (xxxxxxxx) { // 这里写输出的判定条件
        if (!hasPrinted) {// 如果没有进行过输出
            printf(“%d”, n[i]); // 根据你的情况输出,不一定就是%d和n[i]
            hasPrinted = 1;
        } else {
            printf(“ %d”, n[i]);
        }
    }
}

这样你的输出就不会在末尾多出一个空格了!

Samples

input

111
110
11101
110

output

4 3 1
6 2 1

Hint

博客题解:https://blog.csdn.net/balalinhq/article/details/107030238

Solution

#include<bits/stdc++.h>
using namespace std;

// 函数用于计算两个二进制字符串的和
string binaryAddition(const string& a, const string& b) {
    int carry = 0;  // 进位初始化为0
    string result = "";
    int i = a.length() - 1;
    int j = b.length() - 1;

    while (i >= 0 || j >= 0 || carry > 0) {
        int sum = carry;  // 当前位的和等于进位值
        if (i >= 0) {
            sum += a[i] - '0';  // 加上第一个二进制数的当前位(将字符转换为整数)
            i--;
        }
        if (j >= 0) {
            sum += b[j] - '0';  // 加上第二个二进制数的当前位(将字符转换为整数)
            j--;
        }

        result = char('0' + sum % 2) + result;  // 计算当前位的值,并将其添加到结果字符串的前面
        carry = sum / 2;  // 更新进位
    }

    return result;
}

// 函数用于输出二进制数中"1"所在的位置
void printOnesPosition(const string& binaryNumber) {
    bool firstPrint = true;

    for (int i = 0; i <= binaryNumber.length() - 1; i++) {
        if (binaryNumber[i] == '1') {
            if (!firstPrint) {
                cout << " ";//如果不是第一次输出,则先输出一个空格,再输出值                
            }
            cout << binaryNumber.length() - i;
            firstPrint = false;
        }
    }
    cout << endl;
}

int main() {
    string binaryA, binaryB;

    while (cin >> binaryA >> binaryB) {
        string result = binaryAddition(binaryA, binaryB);
        printOnesPosition(result);
    }

    return 0;
}

呆滞,怎会如此

梅坞春早

Description

  西湖十景之九,梅家坞溪谷深广,常年草木繁盛,峰峦叠翠,即使数九寒冬,也不掩如春天气象。梅家坞盛产茶叶,为“西湖龙井”中的珍品。“春”在梅坞便是茶香之意,每当清明时节,云雾缭绕的山坡上,采茶女的身影隐现在碧绿如茵的茶园之间,鸟鸣茶歌,婉转相应,为秀美山水平添了一份灵气,也是春天西湖独特的人文景色。——百度百科
  JLS发现茶山上共有2n棵茶树一字排开,于是想到一个游戏,他对KK说:“我们轮流摘茶叶,每次我和你挑选最左或最右的一颗茶树,摘光上面的茶叶,摘过的茶树不再算在可摘的范围内,我们比比谁最后摘到的多,我们猜拳决定先后!”,KK没有多想就答应了。
  已知KK和JLS都是两个绝顶聪明的人,请问最后谁会摘到更多的茶叶呢?

Toggle Code
#include <stdio.h>
int check(int a[],int len,int k);
int main()
{
	int a[210];
	int t;
	int n,k;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&k);
		for(int i=0;i<2*n;++i)
		{
			scanf("%d",&a[i]);
		}
		if(check(a,2*n,k)==0)
		{
			puts("KKTXDY");
		}
		else
		{
			puts("JLSTXDY");
		}
	}
}

Input

  第一行输入一个数字T代表有T组输入(T≤10)

  每组输入第一行输入两个数字n,k代表茶树上共有2n棵茶树,k=1代表JLS先摘,k=0代表KK先摘(1≤n≤100,0≤k≤1)

  每组输入第二行输入2n个数字ai,(0≤ai≤100)表示从左到右的茶树,其中ai表示这棵茶树上共有ai片茶叶

Output

 若JLS能摘到更多的茶叶,输出JLSTXDY

 否则输出KKTXDY

Samples

input

2
2 1
1 2 3 4
2 0
9 8 7 6

output

JLSTXDY
KKTXDY

Hint

第一组:

JLS首先摘光a4

此时无论KK摘a1还是a3,JLS都可以摘走a2,总共摘到6片茶叶胜出

第二组:

KK首先摘光a1

此时无论JLS摘a2还是a4,KK都可以摘走a3,总共摘到16片茶叶胜出

P.S.相同茶叶数量先手获胜

本题为函数题,如果使用C语言提交,只需要提交check()函数,程序主体在题面中

注意:两个都是绝顶聪明+地图全开。

Solution

int check(int a[], int len, int k) {
    return k;
}

标签:input,int,题解,二进制,2023,字符串,0913,输入,string
From: https://www.cnblogs.com/yoongiBlog/p/17698925.html

相关文章

  • 2023软件工程专业01
    目录我的初心当初为什么报软件工程这个专业?当初对软件工程这个专业的期待和想象是什么?当初希望自己是如何投入这个专业的学习的?曾经做过什么准备,或者立下过什么FLAG吗?我的简历预期目前最想学的技术我的初心当初为什么报软件工程这个专业?当初原本我是想着在选专业......
  • 【题解】[POI2015] MOD
    传送门挺恶心的感觉这题代码,就来写写题解。题目分析假设我们现在要删掉\((x,y)\)这条边,思考这样能贡献的最大或最小直径。不难发现,此时一棵树分裂成了两棵树\(a,b\),我们令它们的直径分别为\(la,lb\)。将两棵树内直径的任意端点连起来,发现\(maxi=la+lb+1\)。将两棵树内直......
  • 洛谷 CF707C Pythagorean Triples の 题解
    这道题是一道数论题,不可用暴力通过,因为输入范围极大,基本上循环是不能在这道题上使用的了。前面大佬们讲的我听不懂,于是在教练的帮助下,我利用题面给出的多组样例找到了规律。在此之前,我们先设输入的数为\(n\)。\(n\)分三种情况。\(n\)是奇数;\(n\)是偶数;\(n\)小于等于......
  • 洛谷 P9503『MGOI』Simple Round I | B. 魔法照相馆 の 题解
    这道题是一道模拟题,坑点不多,但是细节特多,所以导致大部分人\(A\)不了这道题。这道题我也写了注释,如果思路没明白可以看代码和注释的。先创建一个长度为\(3\)的字符串\(s1\),这个字符串的意思就是模拟现在的这几个幕布的情况,这里分了四个字符代表着四种情况,详细如下该字符串......
  • 洛谷 P9502 『MGOI』Simple Round I | A. 魔法数字 の 题解
    直接用pow()函数暴力判断即可,一旦不符合条件就立即跳出循环,要注意开longlong或unsignedlonglong。#include<iostream>#include<cmath>usingnamespacestd;unsignedlonglongn,num;intmain(){cin>>n;for(unsignedlonglongi=2;i<=n;i+=......
  • 洛谷 UVA10852 Less Prime の 题解
    这道题更像是结论题,因为他要推一个小结论,才能做出这道题。大概思路是先打个素数表,存到数组\(a\)内,\(cnt\)是素数表的最后一个元素的下标。之后循环\(M\)次去输入\(N\),每次输入\(N\)之前都要定义两个变量,分别是\(mx\),存\(n-p\cdotx\)的最大值,\(ans\)则是当\(n-......
  • 洛谷 UVA10714 Ants の 题解
    这道题只有一个点比较难想。大概思路就是先输入个$t$,表示要跑几轮,后面的照常输入。因为蚂蚁都是一样的,所以两个蚂蚁碰面的时候相互穿过和各自掉头是没有区别的,我们按照前者模拟就好,其余思路暴力求解即可。#include<iostream>#include<cmath>usingnamespacestd;intt;in......
  • 洛谷 AT_past202005_i 行列操作 の 题解
    这道题最难的点在于用什么方法存储矩阵$a$和一个特殊的操作方式。要存矩阵$a$,最先想到的是二维数组,但是二维数组开不到$1\len\le10^5$,所以可以用一个长度为$2\cdotn$的一维数组$m$来存。当$i\len$时,让一维数组$m_{i}$负责存第$i$行的内容;而当$n+1\lei......
  • 洛谷 AT_maximum_cup_2018_a フィギュアスケート界の貴公子埼大選手 の 题解
    这道题是一道水题,所以你的代码很可能与我相似或相同,如果你的代码出现了问题,你很可能在我的题解里找出答案。这道题大概思路是一旦$10$秒后运动员会接触到毛绒玩具,那么就加上在这个点上毛绒玩具的数量。但是!这道题有一道巨坑的点!由于这道题比较远古,所以说你即使是正解,你也要在......
  • 【2023-09-12】突破机会
    20:00人皆弱点,有弱点才是真实的人性,因此应该宽待人性的弱点。                                                 ——蒙田近年听到最多的话题就是生意难做、失业和倒闭......