首页 > 其他分享 >Acwing. 第 118 场周赛

Acwing. 第 118 场周赛

时间:2023-08-27 19:22:16浏览次数:40  
标签:周赛 x1 ll long 棋子 y1 include 118 Acwing

Acwing. 第 118 场周赛

比赛链接
这几天开学了,一直在宿舍歇着来着,从下周一开始就要开始加训了!!!

A题循环串:

给定两个整数 n,a,请你用前 a个小写字母为循环节,构成一个无限长的循环字符串,然后输出该字符串的前 n个字符。
例如,当 a=2时,循环字符串为 ababab...,当 a=3时,循环字符串为 abcabcabc...。

A思路:

这就是一个比较简单的模拟,因为一开始循环是从一开始的导致在进行取余的过程中出现了一个问题.,但是从0开始就可以避免这个问题.

A代码:

#include<bits/stdc++.h>
using namespace std;
void solve(){
	int n,a;
	cin>>n>>a;
	for(int i=0;i<n;i++){
		cout<<(char)('a'+i%a);
	}
	cout<<endl;
	
}
int main(){
	int t;
	cin>>t;
	while(t--){
		solve();
	}
	return 0;

}

B题操作轮数

给定两个正整数 a,b(a>b)。
对两数执行以下操作,在每一轮操作中:
令较大数变为较大数减较小数之差,令较小数保持不变。(注意,如果两数相等,则任意指定其中一数为较大数即可。)
当两数之中至少有一个数变为 0时,操作停止。
请你计算,一共需要进行多少轮操作。

B思路:

一开始以为模拟就可以过去,但是还是超时了,后来想到其实一次可以处理多次的数据,因为如果a减去一个b还是a大的话,我们可以计算a当中有多少个b,可以一次性把较小的b处理干净.

B代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

void solve(){
	ll a,b;
	cin>>a>>b;
	ll x,y;
	ll ans=0;

	// while(a!=0&&b!=0){
	// 	maxn=max(a,b);
	// 	minn=min(a,b);
	// 	maxn-=minn;
	// 	a=maxn;
	// 	b=minn;
	// 	ans++;
		
	// }//简单的模拟出现了超时的情况
	while(a!=0&&b!=0){
		x=a,y=b;
		a=max(x,y);
		b=min(x,y);
		ll cnt=a/b;//因为其实一次可以处理多次、
		ans+=cnt;
		a%=b;//b是较小的那个数字。
	}
	cout<<ans<<endl;
	
	
}
int main(){
	int t;
	// cin>>t;
	t=1;

	while(t--){
		solve();
	}
	return 0;

}

C题移动棋子

在一个无限大的二维平面中有一颗棋子。
初始时,棋子位于点 (x0,y0)。
现在,我们希望将棋子移动至点 (x1,y1)。
每次移动时,你需要首先选择一个与棋子距离恰好为 r的点,然后令棋子以该点为旋转中心旋转任角度,使得棋子到达适当的位置。
请计算,为了使棋子到达最终目的地,至少需要进行多少次移动。

C思路:

根据题意我们可以很容易想到棋子的运动轨迹是一个圆,这里我们就只需要考虑圆的直径为2r即可,也就是说只要两点之间的距离小于2r,那么我们都可以在两点外找到第三个点,使得这两个点在同一个圆上。

C代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;

int main()
{
    ll r, x, y, x1, y1;
    cin >> r >> x >> y >> x1 >> y1;

    double d = sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
    double t = d / (2 * r);

    cout << ceil(t) << endl;
    return 0;
}

这次的比较简单,只要想到思路其实就不难写出来,下次争取全做出来!!!

标签:周赛,x1,ll,long,棋子,y1,include,118,Acwing
From: https://www.cnblogs.com/du463/p/17660689.html

相关文章

  • AcWing 875. 快速幂
    题目给定$n$组$a_i,b_i,p_i$,对于每组数据,求出${a_i}^{b_i}mod{p_i}$的值。输入格式第一行包含整数$n$。接下来$n$行,每行包含三个整数$a_i,b_i,p_i$。输出格式对于每组数据,输出一个结果,表示${a_i}^{b_i}mod{p_i}$的值。每个结果占一行。数据范围$1≤n≤100000,......
  • AcWing 873. 欧拉函数
    题目给定$n$个正整数$a_i$,请你求出每个数的欧拉函数。欧拉函数的定义$1∼N$中与$N$互质的数的个数被称为欧拉函数,记为$\varphi(N)$。若在算数基本定理中,$N={p_1}^{a_1}{p_2}^{a_2}...{p_m}^{a_m}$,则:$\varphi(n)=m(1-1/p_1)(1-1/p_2)...(1-1/p_k)$输入格式第......
  • AcWing 872. 最大公约数
    题目给定$n$对正整数$a_i,b_i$,请你求出每对数的最大公约数。输入格式第一行包含整数$n$。接下来$n$行,每行包含一个整数对$a_i,b_i$。输出格式输出共$n$行,每行输出一个整数对的最大公约数。数据范围$1≤n≤10^5,1≤a_i,b_i≤2×10^9$输入样例:23646输出样......
  • 8.Acwing基础课第795题-简单-前缀和
    8.Acwing基础课第795题-简单-前缀和题目描述输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l,r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含......
  • 11.Acwing基础课第795题-简单-前缀和
    11.Acwing基础课第795题-简单-前缀和题目描述输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数,,,,c,其中(,)和(,)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出。输......
  • 10.Acwing基础课第797题-简单-差分
    10.Acwing基础课第797题-简单-差分题目描述输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c,表示将序列中[l,r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列......
  • 9.Acwing基础课第796题-简单-子矩阵的和
    9.Acwing基础课第796题-简单-子矩阵的和题目描述输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数,,,,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示......
  • 12.Acwing基础课第799题-简单-最长连续不重复子序列
    12.Acwing基础课第799题-简单-最长连续不重复子序列题目描述给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不......
  • NOIP 2023 周赛 3 题解
    A-Permutationsummarization构造一个\(1\dotsn\)的排列使\(\prod\limits_{i=1}^n\operatorname{lcm}(p_i,p_{(i\bmodn)+1})\)最大。solution不难发现上式最大为\(\prod\limits_{i=1}^ni^2\),即让所有\(\operatorname{lcm}(x,y)=x\timesy\),那么只要使相邻两个数互质......
  • AcWing 868. 筛质数
    题目给定一个正整数$n$,请你求出$1∼n$中质数的个数。输入格式共一行,包含整数$n$。输出格式共一行,包含一个整数,表示$1∼n$中质数的个数。数据范围$1≤n≤10^6$输入样例:8输出样例:4思路朴素筛选遍历到某个数值$i$我们将它的倍数全部删除,如此反复,剩下的为$1......