2 条题解

  • 1
    @ 2026-6-15 17:44:53
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	long long a,b;
    	cin>>a>>b;
    	if((a%2!=0 || b%2!=0) && //这边的特判,用最朴素的方式拦截质数,不进入下面的暴力循环
    	   (a%3!=0 || b%3!=0) && 
    	   (a%5!=0 || b%5!=0) && 
    	   (a%7!=0 || b%7!=0) && 
    	   (a%11!=0 || b%11!=0) && 
    	   (a%13!=0 || b%13!=0) && 
    	   (a%17!=0 || b%17!=0) && 
    	   (a%19!=0 || b%19!=0)){
    		cout<<1;
                    return 0;//是质数直接输出1,并且推出
    	}
    	for(long long i=1;i<=min(a, b);i++){
    		if(a%i==0 && b%i==0){
    			cout<<i<<" ";//暴力枚举
    		}
    	}
    	return 0;
    } 
    

    可以80分,供参考

    • 0
      @ 2026-6-17 18:03:53

      题意

      • 给定两个正整数 xxyy,求它们的所有公共因数,从小到大输出
      • 公共因数指的是能够同时整除 xxyy 的数

      部分分

      • 性质 1:x106x \le 10^6y106y\le 10^6 (35 分)
        • 直接枚举 [1,x][1, x],然后判定其是否可以被 xxyy 整除
        • 能够被整除,直接输出即可
      • 性质 2:x106x \le 10^6y106y\le 10^6 (30 分)
        • 【或】字意味着存在另一个数可能达到 101210^{12}
        • 第一点,用 long long 读入
        • 然后和上面一样写就行了,只不过枚举 [1,106][1, 10^6]
      • 性质 3:xxyy 是质数(15 分)
        • 只需要判断 11xx 或者 11yy
        • 那么直接判断三个数 {1,x,y}\{1, x, y\} 就到手了

      题解(全部得分,前置知识:素数判定的 O(n)O(\sqrt n) 写法)

      • 简单的考虑,能够同时整除 xxyy 那么可以先把所有能够整除 xx 的数找出来

      • 对于这些数判定其是否能够被 yy 整除,能够就记录

      • 最后排序输出

        const int N = 1e6 + 9;
        
        // 因为一个数的因数个数不超过根号个,所以数组长度开根号(1e6)即可
        long long ans[N];	
        
        void solved() {
        	
        	long long x, y;	cin >> x >> y;
        	
        	// 对 x 计算所有的因数
        	int n = 0;
        	for(long long i = 1; i * i <= x; i ++) {
        		if(x % i != 0) continue;
        		
        		if(y % i == 0) ans[++ n] = i;
        		
        		if(i * i == x) continue;	// 重复因子
        		
        		if(y % (x / i) == 0) ans[++ n] = x / i;
        	}
        	
        	sort(ans + 1, ans + n + 1);	// 从小到大排序
        	
        	for(int i = 1; i <= n; i ++) cout << ans[i] << ' ';
        	
        	return ;
        }
      
      • 1

      信息

      ID
      166
      时间
      1000ms
      内存
      256MiB
      难度
      2
      标签
      递交数
      78
      已通过
      10
      上传者