アルゴリズム練習【1】出力区間[M,N](10≦M≦N≦1000)間のすべてのビット数の和がkの数であり、条件を満たす数を出力する個数を統計する
タイトル
出力区間[M,N](10≦M≦N≦1000)間の全てのビット数の和がkの数であり、条件を満たす数の個数を統計的に出力する.
入力フォーマット:入力は第1行に正の整数kを与え、第2行に2つの正の整数MとN(10≦M≦N≦1000)を与え、中間はスペース間隔である.
≪出力フォーマット|Output Format|oem_src≫:最初の行に条件を満たすすべての数を出力します.各数の後ろにスペースがあります.
2行目にcount=総数の形式で条件を満たす数の個数を出力します.
注意:条件を満たす数がない場合、第1の動作は空白です.
入力サンプル1:5 200 300出力サンプル1:203,212,221,230 count=4入力サンプル2:6,100,103出力サンプル2:
出力区間[M,N](10≦M≦N≦1000)間の全てのビット数の和がkの数であり、条件を満たす数の個数を統計的に出力する.
入力フォーマット:入力は第1行に正の整数kを与え、第2行に2つの正の整数MとN(10≦M≦N≦1000)を与え、中間はスペース間隔である.
≪出力フォーマット|Output Format|oem_src≫:最初の行に条件を満たすすべての数を出力します.各数の後ろにスペースがあります.
2行目にcount=総数の形式で条件を満たす数の個数を出力します.
注意:条件を満たす数がない場合、第1の動作は空白です.
入力サンプル1:5 200 300出力サンプル1:203,212,221,230 count=4入力サンプル2:6,100,103出力サンプル2:
#include
int main()
{
int k = 0;
int M = 0;
int N = 0;
int re = 0;
int i = 0;
int count = 0;
scanf("%d", &k);
scanf("%d%d",&M,&N);
for (i = M; i <= N; i++)
{
if (i >= 10 && i < 100)
{
if (k == (i / 10 + i % 10))
{
re = 1;
count++;
printf("%d ",i);
}
}
if (i >= 100 && i <= 1000)
{
if (i != 1000)
{
int a = i / 100;
int b = i % 100 / 10;
int c = i % 10;
if (k == a + b + c)
{
re = 1;
printf("%d ",i);
count++;
}
}
}
}
if (re == 0)
{
printf("
");
}
else
{
printf("
count = %d", count);
}
return 0;
}