当前位置: 首页 > article >正文

真题-桂城2018年六年级

01.整点

题目描述
在二维坐标系, 有一个圆,圆心在(0,0),圆的半径是r。问圆内有多少个整点(所谓的整点就是横坐标和纵坐标都是整数的点)。
若点P的横坐标是整数a,纵坐标是整数b,那么只要满足aa + bb <= r*r, 那么P就是圆内的整点。

输入格式
多组测试数据。 第一行,一个整数G,表示有G组测试数据。1 <= G <= 10。
每组测试数据格式:
一个整数r。 1<=r<=100。

输出格式
共G行,每行一个整数。

样例

输入数据 1

5
1
2
3
47
96

输出数据 1

4
12
28
6920
28916

解题思路

枚举坐标。

代码

#include<bits/stdc++.h>
using namespace std;
int n,r,ans;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    	ans=0;
        cin>>r;
        for(int i=-r;i<=r;i++)
        {
            for(int j=-r;j<=r;j++)
            {
                if(i*i+j*j<=r*r)ans++;
            }
        }
		cout<<ans-1<<endl;
    }
    return 0;
}

02.按钮

题目描述
对于给出的正整数a, 有两个按钮, 每次点击第1个按钮可以使得a减少2, 每次点击第2个按钮可以使得a的值增加3. 你的目标是使得a变成b, 求最少的点击次数,如果无法完成任务输出-1。

输入格式
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1 <= G <= 5。
每组测试数据格式:
一行,两个整数a,b。 1<=a,b<=100。

输出格式
共G行,每行一个整数。

样例

输入数据 1

3
10 14
23 23
3 97

输出数据 1

3
0
33

解题思路

首先,如果一开始 a 就等于 b ,那么可以直接输出 0 。接下来处理 a 小于 b 的情况,差大于 3 的情况可以直接加,那么就是 (b-a)/3 次,减 2 再加 3 就等于加 1,那么再把剩下的数多少个加 1 就行,那么就要加 (b-a)%3*2 次。最后处理 a 大于 b 的情况,差大于 2 的情况可以直接减,那么就是 (a-b)/2 次,减 2 减 2 再加 3 就是减 1 ,那么再把剩下的数多少个加 1 就行,那么就要加 (a-b)%2*3次(由于一个数 mod 2 要么是1,要么是0,所以判断一下,加 3 就行)。

代码

#include<bits/stdc++.h>
using namespace std;
int g;
int main(){
    cin>>g;
    while(g--)
    {
        int a,b;
        cin>>a>>b;
        if(a==b)
        {
            cout<<0<<endl;
            continue;
        }
        if(b>a){
            int c=b-a;
            int s=c/3;
            if(c%3!=0) s+=(c%3)*2;
            cout<<s<<endl;
        }
        else
        {
            int c=a-b;
            int s=c/2;
            if(c%2!=0)s+=3;
            cout<<s<<endl;
        }
    }
    
    return 0;
}

03.字典序

题目描述

有一个字符串 S ,S 的每个字符都是小写字母。

有 N 个贴纸,第 i 个贴纸上面印有一个字符 ch[i] 。使用 1 个贴纸可以替代 S 的 1 个字符。

例如你可以使用第 i 个贴纸去替代 S 的第 j 个字符,即把 S[j] 替换成 ch[i] 。

注意:贴纸只能用来替换 S 的字符,贴纸不能增加或减少 S 的长度。你的目标是使得 S 的字典序最大,输出能得到的字典序最大是 S 。

输入格式

多组测试数据。

第一行,一个整数 G,表示有 G 组测试数据 ( 1 <= G <= 10 )。

每组测试数据格式:

第一行,一个字符串 S ,S 的长度不超过 50 。

第二行,一个整数 N ( 1 <= N <= 50 )。

第三行,N 个字符,第 i 个字符是 ch[i] 。

输出格式

共 G 行,每行一个字符串。

样例

输入数据 1

2
aaaaa
5
zzzzz
xx
2
yz

输出数据 1

zzzzz
zy

解题思路:枚举。

代码

#include<bits/stdc++.h>
using namespace std;
int g;
int main(){
    cin>>g;
    while(g--)
    {
        string s;
        int n;
        char ch[55];
        cin>>s>>n;
        for(int i=1;i<=n;i++) cin>>ch[i];
        sort(ch+1,ch+n+1);
        for(int i=n;i>=1;i--)
        {
            for(int j=0;j<s.size();j++)
            {
                if(ch[i]>s[j]) 
                {
                    s[j]=ch[i];
                    break;
                }
            }
        }
        cout<<s<<endl;
    }
    return 0;
}

04.独居

题目描述
一只奶牛自己独居,它每天需要吃1个水果和花费X元交暖气费。现在奶牛家里有F个水果和D元。奶牛最多能独居多少天?奶牛可以去超市买水果,超市每个水果P元。

输入格式
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1 <= G <= 10。
每组测试数据格式:
一行,4个整数X,F,D,P。 1<=X,F,D,P<=2000000000。

输出格式
共G行,每行一个整数。

样例

输入数据 1

10
3 5 100 10
2 17 20 1
1 97 98 1
16 4 8 2
17 1 2000000000 4
1 1996245611 1999990159 123
15000000 100 2000000000 1
1 1000000000 2000000000 1000000000
1 1 1 1
1 1 1 2000000000

输出数据 1

11
10
97
0
95238095
1996275808
133
1000000000
1
1

解题思路 

判断情况(不好讲,自己看代码理解)。

代码

#include<bits/stdc++.h>
using namespace std;
int g;
int main()
{
	cin>>g;
	for(int i=1;i<=g;i++)
	{
        int x,f,d,p,ans=0,s,t,k;
		cin>>x>>f>>d>>p;
		s=d/x;
		if(s==0)
        {
            ans=0;
        }
		if(s<=f)
        {
            ans=s;
        }
		if(s>f)
		{
			d=d-x*f;
		    t=x+p;
		    k=d/t;
		    ans=f+k;
		}
		cout<<ans<<endl;
	} 
	return 0;
}

05.魔术数

题目描述
X是一个正整数,它的第i个数字是d[i],则 序列(d [1],d[2],d[3],...,d[t])是X 的数字表示(没有前导零)。特别地,d[1]是最高位数字并且d[t]是X的最低位数字。例如,X = 576的数字表示是(5,7,6)。我们说整数X是魔术数,当且仅当:
1、X是某个整数的平方,即对于某个整数Y ,X = Y * Y。
2、对于X 的数字表示(d[1],d[2],d[3],...,d[t]),它满足d[1] < d[2] > d[3] < d[4]......,依此类推。也就是说,对于每个奇数下标i < t,满足d[i] < d[i+1],并且对于每个偶数下标i < t,它满足d[i] > d[i+1]。
给定A和B,输出A和B之间有多少魔术数。

输入格式
多组测试数据。 第一行,一个整数G,表示有G组测试数据。1 <= G <= 10。
每组测试数据格式:
一行,两个整数A和B。 1 <= B <= 10^10。 1 <= A <= B 。

输出格式
共G行,每行一个整数。

样例

输入数据 1

3
1 64
50 60
121 121

输出数据 1

7
0
1

解题思路 

枚举即可。注意:题目中说X=Y*Y,为了防止程序超时,需要枚举Y。

代码

#include<bits/stdc++.h>
using namespace std;
long long g,a,b;
int main(){
	cin>>g;
	while(g--)
	{
		cin>>a>>b;
		long long ans=0;
		for(long long i=ceil(sqrt(a));i<=floor(sqrt(b));i++)
		{
			if(i*i>b)
            {
                break;
            }
			long long s=i*i,l=0,c1[12],c[12];
			while(s)
			{
				c1[++l]=s%10;
				s=s/10;
			}
			for(long long j=1,k=l;j<=l;j++,k--)
            {
                c[j]=c1[k];
			}
			int p=0;
			for(long long j=1;j<l;j++)
			{
				if(j%2==1)
                {
                    if(c[j]>=c[j+1])
                    {
                        p=1;
                    }
                }
				if(j%2==0)
                {
                    if(c[j]<=c[j+1])
                    {
                        p=1;
                    }
                }
			}
			if(p==0)ans++;
		}
		cout<<ans<<endl;
	}
	return 0;
}

06.存在

题目描述
给出一个B数组B[0...n-1]。你要寻找另一个数组A[0...n-1],使得A数组同时满足如下条件:
1、对于0<=i<n, A[i]必须是2^j,其中j是正整数。即A[i]必须是2,4,8,16,32,64...等这样的数。
2、对于0<=i<n, A[i]^B[i]必须能整除P, 其中P=A[0] * A[1] * A[2] * ...A[n-1]。
注意:对于本题,^都是表示幂,也就是多少次方,例如:2^3表示2的3次方,故2^3=8。
如果你能找到这样满足上面要求的A数组,那么输出“Possible”,或者输出“Impossible”,双引号不用输出。

输入格式
多组测试数据。 第一行,一个整数G,表示有G组测试数据。1 <= G <= 13。
每组测试数据格式:

  • 第一行,一个整数n。 1 <= n <= 50。
  • 第二行,n个整数,第i个整数是B[i]。 1 <= B[i] <= 10。

输出格式
共G行,每行一个字符串,“Possible”或者“Impossible”,双引号不用输出。

样例

输入数据 1

4
2
3 2 
3
3 3 3
2
1 10 
3
2 3 10

输出数据 1

Possible
Possible
Impossible
Possible

样例解释
第一组测试数据:A[] = {2,2}
第二组测试数据:A[] = {2,2,2}
第四组测试数据:A[] = {8,4,2}

代码

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
	int g;
	cin >> g;
	while (g--)
	{
		int n;
		cin >> n;
		int b[55];
		double k[55];
		double sum = 0;
		for (int i = 1; i <= n; i++)
		{
			cin >> b[i];
			k[i] = 640.0 / b[i];
			sum += k[i];
		}
		int flag = 1;
		for (int i = 1; i <= n; i++)
			if (b[i]*k[i] < sum)flag = 0;
		if (flag == 1)cout << "Possible"<<endl;
		else cout << "Impossible"<<endl;
	} 
	return 0;
}


http://www.kler.cn/a/406312.html

相关文章:

  • 创客匠人老蒋:个人IP如何获取有效流量?
  • 【爬虫】Firecrawl对京东热卖网信息爬取(仅供学习)
  • 高阶C语言补充:柔性数组
  • 对抗样本存在的原因
  • el-table最大高度无法滚动
  • Jenkins更换主题颜色+登录页面LOGO图片
  • OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)
  • HarmonyOS . 沉浸状态栏使用
  • Elasticsearch Windows版的安装及启动
  • 14:00面试,14:08就出来了,问的问题有点变态。。。
  • Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线
  • 基于干扰观测器的 PD 控制
  • 高性能存储SIG月度动态:重构和优化fuse,推动containerd社区支持erofs
  • 大模型基本能力评测---知识利用
  • Linux2.6内核进程调度队列
  • Windows 驱动开发中 ExAcquireResourceExclusiveLite 和其他锁的区别:
  • Windows中指定路径安装DockerDesktop
  • 死锁相关习题 10道 附详解
  • Day 18
  • 04高可用高并发(D1_高并发 - D1_缓存)
  • ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
  • 设计模式之 状态模式
  • WonderJourney 部署踩坑笔记 2024 ok
  • Java方法中的可变参数列表
  • 【C#】面向对象:矩形类计算周长和面积
  • 【java-Neo4j 5开发入门篇】-最新Java开发Neo4j