每个数 1~7 
1 2 3 4 5 6 7 
三个一组
a<b<c
b%a==0 c%b==0  
 	
1 2 4   1 2 6   1 3 6 
 
第一步 统计下所有数出现的次数  
如果 5 或者7 出现了 直接-1 结束 
 
n = 12  一定要有几个1? 
马上就可以判断1的个数  arr[1]!=n/3; -1结束   

1 1 1 1  4 4 4 2 2 6 3 3    

arr[2] -= arr[4] ; 剩下的就是和6配的个数
arr[6] -= arr[3] ; 剩下的就是和2配的个数 
arr[2] 和 arr[6]的值要>=0  
if(arr[2] == arr[6]) OK  

根据4的个数 输出 1 2 4 
根据3的个数 输出 1 3 6 
根据2的个数 输出 1 2 6

2 条评论

  • @ 2026-4-4 12:01:36
    #include<bits/stdc++.h>
    using namespace std;
    //数字分配 数组计数  
    int main()
    {
    	一共n个数  n是3的倍数 每个数最大为 7 
    	n个数 分成 n/3组 
    	满足条件 
    	1 a < b < c
    	2 b%a==0  c%b==0 
    	1 2 3 4 5 6 7 
    	
    	1 2 4 
    	1 3 6
    	1 2 6 
    	
    	1筛选  如果有 5 || 7 直接 -1 return 0
    	       如果 1的个数!= n/3  -1
    	4 <= 2	    
    	2 = 4 + 6 - 3 
    	3 = 6 - 2  
    	如果成功 
    	根据4的个数输出 1 2 4 
    	根据2-4的个数 输出1 2 6 
    	根据3 的个数 输出1 3 6  
    	return 0;
    }
    • @ 2025-4-5 12:01:31
      6
      1 1 1 2 2 2
      
      a<b<c  三个不一样的数
      
      b%a==0 && c%b==0  
       
      1~7  
      
      1 3 6 
      1 2 6 
      1 2 4
      第一步 如果有5 或者有7  一定不行  
      
      n个数  可以形成n/3组 1的次数可以确定 
      1个个数 不对也不行 
      
      如果1是正好的 
       2 3 4 6  
       3的个数 <= 6     arr[6]-=arr[3]; arr[6]里面就应该是6和2配的个数   
       4的个数 <= 2     arr[2]-=arr[4];  
       
       剩下的2和剩下的6 现在的一定 arr[2] == arr[6]; 
       //讨论的就是配比的问题 , 要恰好配平 ,一定先去配平最特殊的   
       
       1 3 6 根据 arr[3]的个数输出 
       1 2 4 根据 arr[4]的个数输出
       1 2 6 根据 arr[2]的个数输出
      • 1

      信息

      ID
      33
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      100
      已通过
      25
      上传者