CF1674A的题解

一道简单的题目

先考虑 0 0 的情况

很显然,有两种情况:

  1. y 不是 x 的倍数

  2. yx 无法被分解成 b 的乘方

如果不满足上述两种情况,我们只需要将 b1 遍历到 yx ,找到解输出即可。

特别的,如果 x=y ,那么 a=b=1

那就很简单啦~

#include<cstdio>

int t;
int x,y;

int main()
{
	scanf("%d",&t);
	while(t--)
	{
		bool yes=1;
		scanf("%d%d",&x,&y);
		if(y%x)
		{
			printf("0 0\n");//情况1
			continue;
		}
		if(x==y)
		{
			printf("1 1\n");
			continue;
		}
		y/=x;
		for(int i=2;i<=y;i++)
			if(y%i==0)
			{
				int tmp=y;
				bool flag=1;
				int cnt=0;
				while(tmp>1)
				{
					if(tmp%i==0) tmp/=i,cnt++;
					else
					{
						flag=0;
						break;
					}
				}
				if(flag)
				{
					printf("%d %d\n",cnt,i);
					yes=1;
					break;
				}
			}
		if(!yes) printf("0 0\n");//情况2
	}
	
	return 0;
}
posted @   osfly  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示