*思路
先选数,再遍历位置,把每次可以组合的年份,月日,时间的次数乘起来记和,并且乘加和实在选好数的循环内部末尾计算的
*代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int cnt=0;
for(int i=0;i<=9;i++)//只出现一次的数字
{
//确定数字
for(int j=0;j<=9;j++)//只出现三次的数字
{
if(i==j)
continue;//两种数字不能相同
int pos[4];//四个位置放数
int y=0,m=0,t=0;
//确定位置
for(int k=0;k<4;k++)//放数,AAAB型,让B走到每一个位置
{
for(int r=0;r<4;r++)
{
if(k==r)
pos[r]=i;
else pos[r]=j;
}
y++;
int s=pos[3]+pos[2]*10+pos[1]*100+pos[0]*1000;//这个是哪个位置开始置为个位不重要
int a=s/100,b=s%100;
if(a>=1&&a<=12&&b>=1&&b<=30)//b=31,就得是1131,11月没有31天
{
m++;
}
if(a>=0&&a<=23&&b>=0&&b<=59)
{
t++;
}
}
cnt+=y*m*t;
}
}
cout<<cnt;//正确答案212
}