状态:怕不是“石乐志”
用了个循环找one,然后求two,tre,最后桶排(判重)顺便输出。
#include<iostream>
#include<cstdio>
using namespace std;
int one[4],two[4],tre[4];
int tong[10],mark;
void t()//桶 在这里!在这里!
{
if(tre[0]||two[0])return ;
for(int i=1;i<=9;i++)
{
tong[i]=0;
}
for(int i=1;i<=3;i++)
{
tong[one[i]]++;
tong[two[i]]++;
tong[tre[i]]++;
}
for(int i=1;i<=9;i++)
{
if(tong[i]==2||tong[i]==0)return;
}
for(int i=1;i<=3;i++)
{
cout<<one[i];
}
cout<<' ';
for(int i=1;i<=3;i++)
{
cout<<two[i];
}
cout<<' ';
for(int i=1;i<=3;i++)
{
cout<<tre[i];
}
cout<<endl;
}
int temp;
void c()//求two,tre
{
for(int i=1;i<=3;i++)
{
temp=one[i]*2;
if(temp>=10)
{
two[i]=(temp%10);
two[i-1]+=temp/10;
if(i-1==0)continue;
temp=two[i-1];
two[i-2]+=temp/10;
two[i-1]=temp%10;
}
else two[i]=temp;
}
for(int i=1;i<=3;i++)
{
temp=one[i]*3;
if(temp>=10)
{
tre[i]=(temp%10);
tre[i-1]+=temp/10;
if(i-1==0)continue;
temp=tre[i-1];
tre[i-2]+=temp/10;
tre[i-1]=temp%10;
}
else tre[i]=temp;
}
}
int main()
{
for(int o=1;o<4;o++)
for(int j=1;j<=9;j++)
for(int k=1;k<=9;k++)
{
if((o!=j)&&(j!=k)&&(o!=k))
{
one[1]=o;
one[2]=j;
one[3]=k;
c();
t();
}
}
return 0;
}
注:emmmmmm,main里面三重for第二重<,>打反了,多调了半个点
地址:https://www.luogu.org/problemnew/show/P1008