首页 > 其他分享 >洛谷 P8469 [Aya Round 1 D] 文文的数学游戏 C语言

洛谷 P8469 [Aya Round 1 D] 文文的数学游戏 C语言

时间:2025-01-15 16:28:46浏览次数:3  
标签:lowest arr 洛谷 gcd P8469 bi 整数 文文 ll

题目:

P8469 [Aya Round 1 D] 文文的数学游戏 - 洛谷 | 计算机科学教育新生态

题目背景

在解决了上一题之后,琪露诺觉得自己仿佛就是天才。于是,射命丸文又给了她一道简单的数学题。

题目描述

给定长度为 n 的整数序列 a,你需要构造一个长度为 n 的整数序列 b 满足对于所有 1≤i<n,有 1≤bi​<ai​,且 gcd(b1​,b2​,…,bn​) 最大,其中 gcd 表示最大公因数。试求出能得到的最大值和取得最大值时,不同的数列 b 的个数,对 109+7 取模。

定义两个长度为 L 的数列 c、d 不同,当且仅当存在整数 i (1≤i≤L),使得 ci​eqdi​。

输入格式

  • 第一行一个输入整数 n。
  • 第二行输入 n 个整数,表示序列 a。

输出格式

  • 输出一行两个整数,分别表示能得到的最大 gcd(b1​,b2​,…,bn​) 和对应的不同的 b 的个数,对 109+7 取模。

输入输出样例

输入 #1

3
1 2 3

输出 #1

1 6

说明/提示

样例1解释:
注意到由于 1≤bi​<ai​=1,因此 bi​ 必须为1,因此最大的 gcd 值只能为1。在这个前提下,所有合法的 b 如下:

  • {1, 1, 1}, {1, 1, 2}, {1, 1, 3}, {1, 2, 1}, {1, 2, 2}, {1, 2, 3}。

数据范围与约束

对于100%的数据,1≤n≤105,1≤ai​≤109。

思路:

题目给出

1≤bi​<ai​,说明bi的范围了。gcd{bi}里面的最大公约数是a序列里面的最小数字。所以第一个答案出来了。我成为lowest。

2.对于构造gcd{bi},根据案例可以知道,gcd{bi}只要满足1≤bi​<ai​,并且里面n个数最大公约数是lowest。也就说,每一个的bi都是要lowest的倍数。只有这样才能满足gcd{bi}的条件。所以我们会发现当bi取最大也就是ai的时候,bi/lowest 就是bi可以选择的数组。我以案例举例b3,3/1 = 3.而b3有三个选择1,2,3.其余的b1,b2也是一样的。(1≤bi​<ai​)每一个bi都有自己的ai/lowest个选择。所以我们要将每一个bi的方案相乘,就是总方案。

代码如下:

#include<iostream>
using namespace std;
typedef long long ll;
const ll N = 1e5+10;
const ll mod = 1e9+7;
ll arr[N];
ll n;
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> n;
	ll sum = 1;
	ll lowest = 1e9;
	
	for(ll i = 1 ; i <= n ; i++)
	{
		cin >> arr[i];
		lowest = min(lowest,arr[i]);
	}
	
	
	for(ll i = 1 ; i <= n ; i++ )
	{
		 sum *= arr[i] / lowest;
		 sum %= mod;
	}
	cout << lowest << ' ' << sum ;
	return 0;
}

标签:lowest,arr,洛谷,gcd,P8469,bi,整数,文文,ll
From: https://blog.csdn.net/zqystca/article/details/145148034

相关文章

  • gesp(C++五级)(5)洛谷:B3929:[GESP202312 五级] 小杨的幸运数
    gesp(C++五级)(5)洛谷:B3929:[GESP202312五级]小杨的幸运数题目描述小杨认为,所有大于等于aaa的完全平方数都是他的超级幸运数。小杨还认为,所有超级幸运数的倍数都是他......
  • gesp(C++五级)(6)洛谷:B3930:[GESP202312 五级] 烹饪问题
    gesp(C++五级)(6)洛谷:B3930:[GESP202312五级]烹饪问题题目描述有NNN种食材,编号从00......
  • 洛谷B3733 [信息与未来 2017] 基因组分析密码锁题解
    [信息与未来2017]密码锁题目描述乌龟给自己的贵重物品上了密码锁。密码锁上有5 个数字拨盘。每个数字拨盘每次向上拨使数字增加1 (9 向上拨得到0),向下拨使数字减少1 (0 向下拨得到9)。拨盘上的数字组成一个5 位数。只要拨盘上的数字变为素数,密码锁就会被解开。素......
  • 洛谷 P1102 A-B 数对(二分写法)
    题目:P1102A-B数对-洛谷|计算机科学教育新生态题目背景出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的A+BProblem,改用A-B了哈哈!题目描述给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−B=C 的数对的个数(不同位置的数......
  • 洛谷P2181 对角线
    对于一个 ......
  • 洛谷题单指南-线段树的进阶用法-P3157 [CQOI2011] 动态逆序对
    原题链接:https://www.luogu.com.cn/problem/P3157题意解读:长度为n的序列,序列是1~n的排列,一共m个删除操作,每一个删除之前输出逆序对。解题思路:要计算静态的逆序对,可以通过树状数组、权值线段树等方式,时间复杂度都是O(nlogn)要计算动态的逆序对,算上每一次删除,暴力做法需要O(mnlo......
  • 洛谷 P3615 如厕计划
    题意:2n个人排队上厕所,有两个厕所,一个男女都可以上,一个只有女的可以上,每个人上厕所都只有一分钟,你可以调整这些人的顺序,每个的怒气值为有多少后面的人排到自己前面了。求可以n分钟上完厕所的情况中,怒气最大的最小。这题看半天没思路,只能看题解。首先厕所一分钟都不能停,要么男女一......
  • 洛谷 P1928 外星密码
    好久不见,随便找一题找找感觉。递归写法:#include<bits/stdc++.h>usingnamespacestd;strings;stringtimes(stringx,intcnt){ stringnewstr=""; while(cnt--)newstr+=x; returnnewstr;}pair<string,int>decompress(intpos){ intnum=0; stringte......
  • 洛谷 P2754 [CTSC1999] 家园 / 星际转移问题——题解
    #ifdefONLINE_JUDGE#else#defineQiu_Cheng#endif#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;//typedeflonglongll;constintN=2e6+5,mod=1e9+7,inf=INT_MAX;//constintmod1=469762049,mod2=998244353,mod3=1004535......
  • 洛谷 P1550 [USACO08OCT] Watering Hole G 题解
     由于无法提交题解所以来csdn蹭个位置  题目链接  这道题我的思路就是用并查集(推荐先学习:并查集(B站视频))将所有农场连接成n个(几个都不重要)连通块,用一个优先队列(由于作者没找视频所以不放链接了sorry)记录x农场连接y农场的最小价格。  有个值......