2015年C语言组混搭 C/C++

1、
隔行变色

Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。
小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,…
现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。

请你直接提交这个整数,千万不要填写任何多余的内容。

无聊至极,就是问这个区间里有多少个单数

15

2、
立方尾不变

有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,…

请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。

请提交该整数,不要填写任何多余的内容。

暴力即可,答案36

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n=0;
	for(int i=1;i<10001;i++)
	{
		long long int temp=pow(i,3);
		int t=i,tt=1;
		while(t>0)
		{
			tt*=10;
			t/=10;
		}
		if(temp%tt==i) n++;
	}
	printf("%d\n",n);
}

3、立方变自身

观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1
8^3 = 512 5+1+2=8
17^3 = 4913 4+9+1+3=17

请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?

请填写该数字,不要填写任何多余的内容或说明性的文字。

暴力继续,答案6

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n=0;
	for(int i=1;i<10001;i++)
	{
		long long int temp=pow(i,3);
		int t=i,tt=0;
		while(temp>0)
		{
			tt+=temp%10;
			temp/=10;
		}
		if(tt==i) n++,cout<<i<<endl;
	}
	printf("%d\n",n);
}

4、
九数分三组

1~9的数字可以组成3个3位数,设为:A,B,C, 现在要求满足如下关系:
B = 2 * A
C = 3 * A

请你写出A的所有可能答案,数字间用空格分开,数字按升序排列。

注意:只提交A的值,严格按照格式要求输出。
用求全排列的函数暴力,之后输出即可
答案192 219 273 327

#include<bits/stdc++.h>
using namespace std;
int a[9]={1,2,3,4,5,6,7,8,9};
int main()
{
	do{
		int aa=100*a[0]+10*a[1]+a[2];
		int b=100*a[3]+10*a[4]+a[5];
		int c=100*a[6]+10*a[7]+a[8];
		if(aa*2==b&&aa*3==c) cout<<aa<<endl;
		
	}while(next_permutation(a,a+9));
	return 0;
}

5、串逐位和

给定一个由数字组成的字符串,我们希望得到它的各个数位的和。
比如:“368” 的诸位和是:17
这本来很容易,但为了充分发挥计算机多核的优势,小明设计了如下的方案:

int f(char s[], int begin, int end)
{
int mid;
if(end-begin==1) return s[begin] - ‘0’;
mid = (end+begin) / 2;
return ____________________________________; //填空
}

int main()
{
char s[] = “4725873285783245723”;
printf("%d\n",f(s,0,strlen(s)));
return 0;
}

你能读懂他的思路吗? 请填写划线部分缺失的代码。

注意:只填写缺少的部分,不要填写已有代码或任何多余内容。

读懂代码就好,相当于一个二分吧

f(s, begin,mid)+f(s,mid,end);

6、奇妙的数字

小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。
你能猜出这个数字是多少吗?

请填写该数字,不要填写任何多余的内容。

继续暴力,注意条件,必须是每个数字用且仅用一次

#include<bits/stdc++.h>
using namespace std;
int main()
{
	for(int i=0;;i++)
	{
		int num[10]={0};
		int flag=0;
		int cnt=1;
		long long int t=i*i;
		long long int tt=pow(i,3);
		while(t>0)
		{
			int temp=t%10;
			if(num[temp]!=0) flag=1;
			else num[temp]++,cnt++;
			t/=10;
		}
		while(tt>0)
		{
			int temp=tt%10;
			if(num[temp]!=0) flag=1;
			else num[temp]++,cnt++;
			tt/=10;
		}
		if(flag==0&&cnt==11)
		{
			cout<<i<<endl;
			break;
		}
		
	}
	
	return 0;
}

7、饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。

输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数

例如:
用户输入:
100
程序应该输出:
149

用户输入:
101
程序应该输出:
151

资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。
注意剩下的瓶盖就好,不要省略了余数

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
	int n,cnt=0;
	cin>>n;
	cnt=n;
	while(n>2)
	{
		int temp=n/3;
		cnt+=temp;
		int tt=n%3;
		n=temp+tt;
	}
	cout<<cnt<<endl;
	return 0;
}

8、
打印大X

小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。

要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X

例如,用户输入:
3 9
程序应该输出:

.***…**.
.



…***.***…
.***…***.

(如有对齐问题,参看【图1.jpg】)
在这里插入图片描述
再例如,用户输入:
4 21
程序应该输出

..










…********…






..

(如有对齐问题,参看【图2.jpg】)
在这里插入图片描述
资源约定:
峰值内存消耗 < 256M
CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

#include<iostream>
#include<stdio.h>
using namespace std;
char Map[1005][1005];
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=0;i<m/2;i++)
	{
		for(int j=0;j<i;j++)
			Map[i][j]='.';
		for(int j=i;j<n+i;j++)
			Map[i][j]='*';
		for(int j=i+n;j<(m+n-1)/2;j++)
			Map[i][j]='.';
		for(int j=(m+n-1)/2;j<(m+n-1)-i-n;j++)
			Map[i][j]='.';
		for(int j=m+n-1-i-n;j<m+n-1-i;j++)
			Map[i][j]='*';
		for(int j=m+n-1-i;j<m+n-1;j++)
			Map[i][j]='.';
	}
	
	for(int i=m/2;i>=0;i--)
	{
		for(int j=0;j<i;j++)
			Map[-i+m-1][j]='.';
		for(int j=i;j<i+n;j++)
			Map[-i+m-1][j]='*';
		for(int j=i+n;j<(m+n-1)/2;j++)
			Map[-i+m-1][j]='.';
		for(int j=(m+n-1)/2;j<(m+n-1)-i-n;j++)
			Map[-i+m-1][j]='.';
		for(int j=(m+n-1)-i-n;j<(m+n-1)-i;j++) 
			Map[-i+m-1][j]='*';
		for(int j=m+n-1-i;j<m+n-1;j++)
			Map[-i+m-1][j]='.';
	}
	for(int i=0;i<m;i++)
	{
		for(int j=0;j<m+n-1;j++)
			cout<<Map[i][j];
		cout<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43849505/article/details/87022263
C++