1
AI 绘图是近期很流行的一种画图程序,它可以通过一些标签自动生成二次元图片,也可以给出图片来画新图片。每个标签可以通过花括号({})来设置权重,标签之间用逗号(,)分隔。
最近 Messywind 沉迷于 AI 绘图,他用的标签太多以至于统计不过来了,请你帮他输出每个标签的名称以及权重。
权重的定义为花括号的层数,若没有花括号权重为 000
输入描述:
第一行包含一个长度不超过 10310 ^ 3103 字符串 SSS
字符串只包含大小写英文字母、数字、{}、,、_,保证用逗号(,)分隔标签且行末无逗号(,)
数据保证每种标签只出现一次,无重复标签。
输出描述:
按标签的出现顺序输出 xxx 行,其中 xxx 为 SSS 中所有标签出现次数。
每行输出标签名称和标签权重,用空格分隔。
1.1正确代码:
C语言:kindred_ 提交的代码
提交时间:2022-11-24 15:38:27 语言:C 代码长度:340 运行时间: 2 ms 占用内存:296K运行状态:答案正确
#include <stdio.h>
#include <string.h> //C语言字符串函数
char s[10000];
int main()
{ char a;
int n=0,i=0;
scanf("%c",&a); //1.2输出格式总结:
for(;a!='\n';)//
{
if(a=='{') //字符串只包含大小写英文字母、数字、{}、,、_,保证用逗号(,) 分隔标签且行末无逗号(,)
n++;
else if(a==',')
{ printf("%s %d\n",s,n);
memset(s,'\0',size of(s));
i=0;
n=0;
}
else if(a!='}')
{ s[i]=a;
i++;
}
scanf("%c",&a);
}
printf("%s %d\n",s,n);
return 0;
}
1.2输出格式总结:
%a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99)
%c 字符
%d 有符号十进制整数
%f 浮点数(包括float和doulbe)
%e(%E) 浮点数指数输出[e-(E-)记数法]
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数(与%d相同)
%u 无符号十进制整数
%o 八进制整数 e.g. 0123
%x(%X) 十六进制整数0f(0F) e.g. 0x1234
%p 指针
%s 字符串
1.3char 字符串简介
在C 语言中,除了前面介绍的int 整型、float / double 浮点数、bool 值….等等,char 字符串也是一种非常重要的数据类型;
字符串:一般用一对双引号””括起的一串字符来表示字符串常量,字符串默认以转义字符 \0 结尾,字符串常量是不可被修改的,如:
"Hello!"、"\aWarning!\a"、"123abc\n"、""
1.4<string.h>头文件介绍
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
2题目描述
众所周知,2021 年 6 月的星空杯决赛,MDY 战队的卡莎在决赛圈完成了 1v3 的精彩操作。看过这场比赛后,sty 每次 1v3 时都会大喊:“我要易大山了!我要易大山了!易大山!”。
现在给出一局游戏决赛圈的的击杀记录和 sty 使用的游戏 ID,请你判断 sty 是否完成了一打三。由于决赛圈可能存在多支三人小队,为简化问题,存在以下两个特殊规则:
1. 只要 sty 完成了三次击杀且无论最终是否阵亡,都认为他完成了一打三。
2. 由于重生的 bug 实在是太多了。即使 sty 被击杀后,他击杀其他人仍视为有效击杀。
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
输入描述:
第一行为一个整数 NNN,代表有 NNN 条击杀记录。
第 222 至 N+1N+1N+1 行为一行字符串,代表击杀记录。
第 N+2N + 2N+2 行为一行字符串,代表 sty 使用的游戏 ID。
格式如下:
3
PlayerName kill PlayerName
PlayerName kill PlayerName
PlayerName kill PlayerName
ID
题目保证 N≤20N \le 20N≤20,PlayerName 和 ID 均为长度不超过 10510 ^ 5105 且仅由字母、数字、下划线组成的非空字符串。
输出描述:
如果 sty 完成了一打三,输出 yidashan!,否则输出 kexi
2.1正确题解:
#include<stdio.h>
#include<string.h>
#include<math.h> //调用数学库
char e[100005],a[20][100001];
int main(){
int n,flag=0;
char d;
scanf("%d",&n);
d=getchar(); //字符串存入d中
for(int i=0;i<n;i++){
scanf("%s kill %s",a[i],e); //%s 对应输入字符串
}
scanf("%s",e);
for(int i=0;i<n;i++){
if(!strcmp(a[i],e)) flag++;//strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较
}
if(flag>=3) printf("yidashan!\n");
else printf("kexi\n");
return 0;
}
2.2if的用法解析
CSDN
当我们要写多条语句时,要用到{},将代码括起来。
①
if (表达式)
语句1;
else
语句2;
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
}
②//多分支
if (表达式1)
语句1;
else if (表达式2)3.
语句2;
else
语句3;
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("少年\n");
}
else if (age >= 18 && age < 30)
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年\n");
}
else if (age >= 50 && age < 80)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
}
多分支语句:
从上到下依次判断,若符合 if 条件,就执行if下面的语句;若不符合 if ,就看是否满足下一条 else if 的条件;
直到找出符合条件的为止,若所有条件都不符合,就执行 else 的语句。
3
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
因为 Bulbul 太喜欢说 666 了,yuyansheng 释放了一个魔法,使他忘记了数字 666 的存在。
所以,他在数数的时候会跳过所有包含数字 666 的数,如果让 Bulbul 说出从 111 开始的前十个数字,他会大声喊出: 1 2 3 4 5 7 8 9 10 11 。他说的 777 实际上是 666 , 888 实际上是 777 ,以此类推。
zzk 可以解开这个魔法,条件是 Bulbul 说出一个数字 xxx zzk 可以立刻说出实际上 xxx 是多少,但是 zzk 太笨了,无法立刻说出这是几,所以向聪明的你寻求帮助。
请你编写一个程序,来帮助 zzk 和 Bulbul 解除 yuyansheng 的魔法吧!
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
输入描述:
第一行为一个整数 NNN (1≤N≤104)(1 \le N \le 10 ^ 4)(1≤N≤104),代表 Bulbul 说出的数的个数。
第二行至第 N+1N + 1N+1 行每行包含一个整数 xix_ixi (1≤xi≤106)(1 \le x_i \le 10 ^ 6)(1≤xi≤106),代表 Bulbul 说出的数字,保证 xix_ixi 中不包含 666
输出描述:
输出共 NNN 行。
第 iii 行表示 xix_ixi 实际上对应的数字。
3.1正确题解:
#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
int num[1000001]={0};
int i,t;
for(i=1;i<=1000000;i++)
{
int a=i;
int b=1;
while(a)
{
if(a%10==6)
b=0;
a/=10;
}
num[i]=num[i-1]+b;
}
for(i=0;i<N;i++)
{
scanf("%d",&t);
printf("%d\n",num[t]);
}
4
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
yxlxszx 作为知名 OP,每天都花非常多的时间刷圣遗物,希望能让自己心爱的角色早点毕业。作为一个极度自律的人,yxlxszx 每天至少要刷 nnn 次副本,一共有 mmm 个副本。每个副本只能刷一次。但是 yxlxszx 最近 212121 抽抽到了一命小草神,喜出望外导致大脑宕机,你能帮帮 yxlxszx 数一数,他有多少种不同的刷副本方案?
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
输入描述:
第一行包含两个整数 n,mn,mn,m (1≤n≤m≤60)(1≤n≤m≤60)(1≤n≤m≤60) 表示每天至少要刷的副本次数和所有的副本个数。
输出描述:
输出一个整数,表示不同的刷副本方案。
4.1正确题解:
#include <stdio.h>
int main()
{
long long m,n,sum=0,c[61];
c[0] = 1;
scanf("%lld%lld",&m,&n);
for(long long i = 1;i<= n;i++)
{
c[i] = c[i-1] * (n - i + 1) / i;
}
for(int i = m;i <= n;i++)
{
sum += c[i];
}
printf("%lld",sum);
return 0;
}
5
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
示例1
输入
114514
输出
8
示例2
输入
1092718960
输出
40
示例3
输入
23333333333
输出
2
5.1正确题解:
#include<stdio.h>
int main()
{
long long n, i, ans = 0;
scanf("%lld", &n);
for (i = 1; i*i <= n; i++)
if (n % i == 0)
{
ans++;
if(n/i!=i)
ans++;
}
printf("%lld", ans);
return 0;
}
仅上传了几道自己思考过后的题,如有错误,欢迎各位指正!
以下附上此次比赛完整题目: