【洛谷 P8615】[蓝桥杯 2014 国 C] 拼接平方数 题解(打表+循环+分支)

文章分享了解决蓝桥杯2014国C题目的C++代码,通过遍历预设的拼接平方数数组ans,找出给定区间内的这些特殊数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[蓝桥杯 2014 国 C] 拼接平方数

题目描述

小明发现 49 49 49 很有趣,首先,它是个平方数。它可以拆分为 4 4 4 9 9 9,拆分出来的部分也是平方数。 169 169 169 也有这个性质,我们权且称它们为:拼接平方数。

100 100 100 可拆分 1 , 00 1,00 1,00,这有点勉强,我们规定, 0 , 00 , 000 0,00,000 0,00,000 等都不算平方数。

小明想:还有哪些数字是这样的呢?

你的任务出现了:找到某个区间的所有拼接平方数。

输入格式

两个正整数 a , b ( a < b < 1 0 6 ) a,b(a<b<10^6) a,b(a<b<106)

输出格式

若干行,每行一个正整数。表示所有的区间 [ a , b ] [a,b] [a,b] 中的拼接平方数,从小到大输出。

样例 #1

样例输入 #1

169 10000

样例输出 #1

169
361
1225
1444
1681
3249
4225
4900
9025

提示

时限 1 秒, 256M。蓝桥杯 2014 年第五届国赛


思路

首先,定义一个整数数组ans,这个数组预先存储了所有的拼接平方数。

在main函数中,读取两个输入a和b,这两个输入表示要查找的区间。

接下来,遍历预先存储的拼接平方数数组ans。如果数组中的数在输入的区间内,就输出这个数。


AC代码

#include <algorithm>
#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;

const int N = 1e6 + 7;
const int INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;

int n;
const int ans[] = {49,	   169,	   361,	   1225,   1444,   1681,   3249,
				   4225,   4900,   9025,   15625,  16900,  36100,  42025,
				   49729,  64009,  81225,  93025,  105625, 122500, 144400,
				   168100, 225625, 237169, 256036, 324900, 422500, 490000,
				   519841, 576081, 819025, 902500, 950625, 970225};

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int a, b;
	cin >> a >> b;
	for (const auto i : ans) {
		if (a <= i && i <= b) {
			cout << i << "\n";
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值