『アルゴリズムコンテスト入門経典』練習問題——Chapter 2
23900 ワード
練習問題2-1桁(digit)
練習問題2-2水仙花数(daffodil)
練習問題2-3韓信点兵(hanxin)
練習問題2-4逆三角形(triangle)
練習問題2-5統計(stat)
リダイレクトを使用する場合は、次のように変更します.
練習問題2-6調和関数(harmony)
練習問題2-7近似計算(approximation)
練習問題2-8サブシーケンスの和(subsequence)
練習問題2-9分数化小数
練習問題2-10配列(permutation)
リファレンスアドレスhttp://blog.csdn.net/litiouslove/article/details/7891700
1 #include
2 void main()
3 {
4 int n,number=0;
5 scanf("%d", &n);
6 while(n!=0)
7 {
8 n /= 10;
9 number++;
10 }
11 printf("%d
",number);
12 }
練習問題2-2水仙花数(daffodil)
#include
void main()
{
int i;
int a,b,c;
for (i=100;i<1000;i++)
{
a = i/100;
b = i/10%10;
c = i%10;
if (a*a*a+b*b*b+c*c*c==i)
{
printf("%d ",i);
}
}
printf("
");
}
練習問題2-3韓信点兵(hanxin)
1 #include
2 void main()
3 {
4 int n,m,q;
5 bool success = false;
6 scanf("%d%d%d", &n, &m, &q);
7
8 for (int i=1;i<100;i++)
9 {
10 if (i%3==n && i%5==m && i%7==q)
11 {
12 printf("%d
",i);
13 success = true;
14 break;
15 }
16 }
17 if (!success) // i == 100
18 {
19 printf("No answer
");
20 }
21 }
練習問題2-4逆三角形(triangle)
1 #include
2 void main()
3 {
4 int i,n,m,j;
5 scanf("%d", &n);
6
7 for (i=n;i>0;i--)
8 {
9 for (m=0;m)
10 {
11 printf(" ");
12 }
13 for (j=2*i-1;j>0;j--)
14 {
15
16 printf("#");
17 }
18 printf("
");
19 }
20 }
練習問題2-5統計(stat)
1 #include
2 #include
3 void main()
4 {
5 int i,n,m,number=0;
6 int *p;
7 scanf("%d", &n);
8 p = (int*)malloc(sizeof(int)*n);
9 for(i=0;i)
10 {
11 scanf("%d",&p[i]);
12 }
13 scanf("%d", &m);
14 for(i=0;i)
15 {
16 if (p[i]<m)
17 {
18 number++;
19 }
20 }
21 printf("%d",number);
22 }
リダイレクトを使用する場合は、次のように変更します.
1 #define LOCAL
2 #include
3 #include
4 void main()
5 {
6 #ifdef LOCAL
7 freopen("data.in","r",stdin);
8 freopen("data.out","w",stdout);
9 #endif
10 //
練習問題2-6調和関数(harmony)
#include
void main()
{
int n,i;
double sum = 0;
scanf("%d",&n);
for (i=1; i <=n;i++)
{
sum += 1.0/i;
}
printf("%.3lf",sum);
}
練習問題2-7近似計算(approximation)
1 #include
2 #include
3 void main()
4 {
5 int n,m,q;
6 double flag = -1;
7 double sum = 0;
8 double tmp;
9 for (int i=1;;i+=2)
10 {
11 flag = -1 * flag;
12 tmp = flag/i;
13 // printf("%lf
",tmp);
14 sum += tmp;
15
16 if (fabs(tmp)<10e-6)
17 {
18 break;
19 }
20 }
21 printf("pi = %lf
",4*sum);
22 }
練習問題2-8サブシーケンスの和(subsequence)
#include
#include
void main()
{
int i,n,m;
double sum=0;
scanf("%d%d",&n,&m);
for (i=n;i<=m;i++)
{
sum+=1.0/i/i; // n n*n
}
printf("%.5lf",sum);
}
練習問題2-9分数化小数
1 #include
2 int main(void)
3 {
4 int a, b, c;
5 double x;
6 scanf("%d%d%d", &a, &b, &c);
7 x = 1.0*a/b;
8 printf("%.*lf
", c, x); //printf("%*.*lf", x, y, z) * x, * y,lf z
9 return 0;
10 }
練習問題2-10配列(permutation)
1 #include
2 int main(void)
3 {
4 int x, y, z, a[10] = {0};
5 for(x = 100; x < 333; x++)
6 {
7 y = 2*x;
8 z = 3*x;
9 // a[ ] = 1
10 a[x/100] = a[x/10%10] = a[x%10] = 1;
11 a[y/100] = a[y/10%10] = a[y%10] = 1;
12 a[z/100] = a[z/10%10] = a[z%10] = 1;
13 int i, s = 0;
14 for(i = 1; i < 10; i++)
15 s += a[i];
16 if(s == 9)
17 printf("%d\t%d\t%d
", x, y, z);
18 for(i = 1; i < 10; i++) // 0
19 a[i] = 0;
20 }
21 return 0;
22 }
リファレンスアドレスhttp://blog.csdn.net/litiouslove/article/details/7891700