1.好未来//好未来1
题目:
题目描述
一个数字串可以被拆开成多个数字串,例如12345拆成12345或
者12345。给一个正整数类型的数字串n,求n拆开后的数能被3整
除的最大数量m是多少。(0也算3的倍数)
举例:n=12345,拆成
1):12,3,45,m=3
2):123,45,m=2
输入描述:
输入一个正整数类型的数字串n(字符串长度<100)
输出描述:
输出一个数字表示n拆开后能被3整除最多的数量
示例1
输入
321
输出
2
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
string s;
cin >> s;
int num = 0;
int temp = 0;
for (int i = 0; i < s.size();i++)
{
if ((s[i] - '0') % 3 == 0)
{
num++;
temp = 0;
}
else
temp = temp + (s[i] - '0');
if (temp % 3 == 0)
{
temp = 0;
num++;
}
}
cout << num << endl;
return 0;
}
2.
题目描述
一个等式x+y=x|y("|"表示或运算)。给出一个正整数x,满足等式的正整数y有很多个,从第一个开始由小到大数y,给定一个正整数k,求第k个y
输入描述
输入t表示有t组数据(t<100)
每组数据输入x和k(0<x<10^18,0<k<10^18)
输出描述
输出y
示例1
输入
1
4 2
输出
2
#include<iostream>
#include<cstring>
using namespace std;
const int MAX = 1005;
int a[MAX], dp[MAX];
int MaxSum(int *a, int n)
{
int i, j, maxsum;
for (i = 0; i<n; i++)
dp[i] = a[i];
maxsum = dp[0];
for (i = 1; i<n; i++)
for (j = 0; j<i; j++)
{
if (a[i]>a[j] && dp[i]<dp[j] + a[i])
dp[i] = dp[j] + a[i];
if (maxsum<dp[i])
maxsum = dp[i];
}
return maxsum;
}
int main()
{
for (int i = 0; i < 10; i++)
{
cin >> a[i];
}
cout << MaxSum << endl;
return 0;
}
题目
描述
举例:
对于固定数组:{0,1,2,3,4,5,6,7,8,9}
输入布尔数组:(0,1,1,1,1,1,1,1,1,0},其中0表示对应下标数组元素可出现也可以不出现,1表示必须出现
输出所有可能性组合,转化成字符串,并按照字符串升序排序
012345678
0123456789
12345678
123456789
输入描述
位置出现的布尔值
输出描述
打印所有组合
示例1
输入
0 1 1 1 1 1 1 1 1 0
输出
012345678
0123456789
12345678
123456789
题目描述
有一个n面的骰子,掷每一面都是等概率的。其中有m个奖励面,如果掷到奖励面则可以再掷一次骰子。玩家每掷一次都能获得掷到那一面的分数。求玩家可获得分数的期望
输入描述:
第一行输入两个数n m分别表示骰子有n面,有m个面有奖励(0<=m<n<=10^9)
第二行输入n个数字用空格隔开,表示n个面的分数
输出描述
输出期望,保留小数点后两位。
示例1
输入
6 1
1 1 1 1 1 1
输出
1.20
题目描述
对于正整数数组,求最大元素和,要求元素大小必须是升序的。
int[] data = {5,1,3,4,9,7,6,8}
最大升序序列是:1,3,4,7,8
int Sum (unsigned int[] data, int n);
int main()
{
unsigned int data[8];
for(int i=0; i<8; i++) scanf("%d", &data[i]);
int ret=Sum (data, 8);
printf("max sum: %d\n",ret);
return 0;
}
输入描述:
正整数数组,假定数组长度<100,元素最大值<10000
输出描述:
最大升序和
示例1
输入
5 1 3 4 9 7 6 8
输出
23
题目描述
使用C语言,实现字符串子串替换接口,可以假设替换前和替换后
的字符串都有最大长度限制,例如
char* ReplaceSubStr(const char* str, const char* srcSubStr,
const char* dstSubStr, char* out)
int main
{
char str[1024];
char srcSubStr[1024];
char dstSubStr[1024];
char out[1024];
gets(str);
gets(src SubStr);
gets(dstSubStr);
ReplaceSubStr(str, srcSubStr, dstSubStr, out);
printf("%s\n",out);
return 0;
}
输入描述
字符串源串,被替换的子串,目标子串。
输出描述
替换后的新字符串。
示例1
输入
this is a chick
is
Are
输出
thare are a chick
华为8.8 大小写字母转化
1 2 3 4 5 6 7 8 9 10 11 | 题目描述 输入任意个字符串,将其中的小写字母变为大写,大写字母变为小写,其他字符不用处理; 输入描述: 任意字符串:abcd12#%XYZ 输出描述: 输出字符串:ABCD12#%xyz 示例1 输入 abcd12#%XYZ 输出 ABCD12#%xyz
|