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;
}