Valentine's Day Round 1002 Misaki's Kiss again

2024-08-27 02:58

本文主要是介绍Valentine's Day Round 1002 Misaki's Kiss again,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题意

Misaki's Kiss again


Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 571    Accepted Submission(s): 75


问题描述
摩天轮后,一些朋友希望再次得到Misaki的吻,所以Misaki把他们分别编号从1到N,如果他们中有人的编号是M,而且gcd(N,M)=N xor M,那么他以可以得到一个吻。
请帮助Misaki找到所有的M..
Note that:
GCD(a,b) 表示ab的最大公约数.
AXORB 表示A异或B.
输入描述
多组测试数据,
对于每组测试数据只有一个数N(0<N<=1010)
输出描述
第一行Case #x:
第二行一个数count表示有多少个M
第三行有count个数,按升序输出,中间一个空格,表示具体的M..
输入样例
3
5
15
输出样例
Case #1:
1
2
Case #2:
1
4
Case #3:
3
10 12 14
Hint
第三个样例:gcd(15,10)=5且(15 xor 10)=5, gcd(15,12)=3且(15 xor 12)=3,gcd(15,14)=1且(15 xor 14)=1
思路:简单的暴力,但是比赛的时候一直被最后输出的的空格格式卡住,遗憾爆O,以后还是要多多参加!

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
using namespace std;
int gcd(int a,int b)
{return b==0?a:gcd(b,a%b);
}
int xorr(int a,int b)
{return (a xor b);
}
int a[1000001];
int main()
{long long int n,sum,m;int i,j,ans=0;while(~scanf("%I64d",&n)){sum=0;for(i=1; i<=n; i++){if(gcd(n,i)==xorr(n,i))a[sum++]=i;}sort(a,a+sum);printf("Case #%d:\n%I64d\n", ++ans, sum);for(i=0; i<sum-1; i++){printf("%d ",a[i]);}printf("%d\n",a[sum-1]);}return 0;
}

学习一下别人的优化的代码:

 时间优化63ms

#include <iostream>
#include <algorithm>
using namespace std;long long GCD(long long a,long long b)
{if(b == 0){return a;}else{return GCD(b,a%b);}}int main () {long long n;long long T = 1;while (cin >> n) {long long s[10000];long long k = 0;for (long long i=1; i*i <= n; i++) {if (n % i == 0) {//cout << i <<endl;s[k++] = i;if (i*i != n)s[k++] = n/i;}}long long ans[10000];long long b = 0;for (long long i=0; i<k; i++) {long long m = n ^ s[i];long long g = GCD(n, m);if (g == s[i] && m && m <= n) ans[b++] = m;}sort(ans,ans+b);cout << "Case #" << T++ <<":"<<endl;cout << b << endl;for (long long i=0; i<b; i++) {if (i) cout <<" ";cout << ans[i];}cout << endl;}
}




这篇关于Valentine's Day Round 1002 Misaki's Kiss again的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110435

相关文章

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

Codeforces Round #261 (Div. 2)小记

A  XX注意最后输出满足条件,我也不知道为什么写的这么长。 #define X first#define Y secondvector<pair<int , int> > a ;int can(pair<int , int> c){return -1000 <= c.X && c.X <= 1000&& -1000 <= c.Y && c.Y <= 1000 ;}int m

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

Linux基础入门 --9 DAY

文本处理工具之神vim         vi和vim简介 一、vi编辑器 vi是Unix及类Unix系统(如Linux)下最基本的文本编辑器,全称为“visual interface”,即视觉界面。尽管其名称中包含“visual”,但vi编辑器实际上工作在字符模式下,并不提供图形界面。vi编辑器以其强大的功能和灵活性著称,是Linux系统中不可或缺的工具之一。 vi编辑器具有三种主要的工作模

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

[Day 73] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在健康管理中的應用實例 1. 引言 隨著健康管理需求的提升,人工智能(AI)在該領域的應用越來越普遍。AI可以幫助醫療機構提升效率、精準診斷疾病、個性化治療方案,以及進行健康數據分析,從而改善病患的健康狀況。這篇文章將探討AI如何應用於健康管理,並通過具體代碼示例說明其技術實現。 2. AI在健康管理中的主要應用場景 個性化健康建議:通過分析用戶的健康數據,如飲食、運動、睡眠等,AI可

Vue day-03

目录 Vue常用特性 一.响应更新 1. 1 v-for更新监测 1.2 v-for就地更新 1.3 什么是虚拟DOM 1.4 diff算法更新虚拟DOM 总结:key值的作用和注意点: 二.过滤器 2.1 vue过滤器-定义使用 2.2 vue过滤器-传参和多过滤器 三. 计算属性(computed) 3.1 计算属性-定义使用 3.2 计算属性-缓存 3.3 计算属

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假