1,2,3,… , 7,8,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。输出所有解。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, i, j;
char a[10];
for(n = 123; n < 330; n++){
sprintf(a, "%d", n * 1000000 + n * 2 * 1000 + n * 3);
for(j = 0, i = '1'; i <= '9'; memchr(a, i++, 9) && j++);
if (j == 9) {
printf("%d %d %d \n", n, n * 2, n * 3);
}
}
return 0;
}
说明:
sprintf()函数的原型:int sprintf( char *buffer, const char *format [, argument,...] );
sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。
memchr()函数的原型:extern void *memchr(void *buf, char ch, unsigned count);
用法:#include <string.h>
功能:从buf所指内存区域的前count个字节查找字符ch。
说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。