小题精炼-----初试C语言

 

            毫无疑问, 这个又是给新入门学C语言的小鲜肉准备的!

 

题解:

1. 直接两个循环就ok啦! 当初讲课的时候几乎讲过原题啦。

2. 直接 100的三次方就是1000000啦, 所以直接对某数的三次方开方(取int型), 然后再平方, 判断一下是否相等。

3. 可以直接扫描一下, 把大写字母都转化成小写, 然后逐个判断!

4. 求组合数, 直接按照求组合数的公式, 然后循环求解, 就好啦!

5. 直接循环求出 真因子和, 判断一下是否和原数相等否, 即可!(这个好像也讲过原题!)

6.多重集的组合,这就是一个公式的事儿!  这个公式的推导过程也很机智!

附加题: 仔细回想一下自己小学算除法的过程, 然后用一个数组保存余数。 用另一个数组判断同一个余数是否出现两次,当有一个余数出现两次时, 立刻停止往下除。 然后找出这两个余数出现的位置(加括号), 然后把各   余数*10 /除数  输出即可! 。 详见代码!   

 

Talk is cheap, show me your code!

各题代码:

1.

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int ok;
 8     printf("%d\n", 2);
 9     for(int i=3; i<=1000000; i++)
10     {
11         int ok = 1;
12         for(int j=2; j*j<=i; j++)
13         {
14             if(i%j==0)
15             {
16                 ok = 0;
17                 break;
18             }
19         }
20         if(ok) printf("%d\n", i);
21     }
22     return 0;
23 }
View Code

 

#include<stdio.h>
#include<math.h>
const int maxn=10000000;
int a[maxn];
int main()
{
    for(int i=2;i<maxn;i++)
    a[i]=i;
    for(int i=2;i<sqrt(maxn);i++) if(a[i]) {
        for(int j=i*i;j<maxn;j=j+i)
        a[j]=0;
    }
    for(int i=2;i<maxn;i++)
    if(a[i]!=0) printf("%8d",i);    
} 
View Code

 

 

 

2.

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     for(int i=1; i<=100; i++)
 9     {
10         int q = sqrt(i*i*i*1.0);
11         if(q*q==i*i*i) printf("%d\n", i*i*i);
12     }
13     return 0;
14 }
View Code

 

#include<cstdio>
#include<cmath>
int main()
{
    for(int i=1;i<=100;i++){
        if(sqrt(i*i*i)*sqrt(i*i*i)==i*i*i);
        printf("%8d\n",i*i*i);
    }
    return 0;
}
View Code

 

 

 

3.

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5 
 6 char str[10005];
 7 
 8 int main()
 9 {
10     while(scanf("%s", str)!=EOF)
11     {
12         getchar();
13         for(int i=0; str[i]!='\0'; i++)
14         if(str[i]>='A'&&str[i]<='Z') str[i] += 32; 
15         int len = 0;
16         for(int i=0; str[i]!='\0'; i++)
17         {
18            if(str[i]!='#') len++;
19             for(int j=i+1; str[j]!='\0'; j++)
20                 if(str[i]==str[j]) str[j] = '#';
21         }
22         printf("%d\n", len);
23     }
24     return 0;
25 }
View Code

 

#include<cstdio>
#include<cstring>
const int maxn=1000000;
char s[maxn];
int main()
{
    int a[26]={0};
    while(~scanf("%s",s))
    {
        int sum=0,len=strlen(s);
        for(int i=0;i<len;i++){
            
            if(a[s[i]-65]==1||a[s[i]-97]==1)
            continue;
            
            if(s[i]>=65&&s[i]<=90)
            a[s[i]-65]=1;
            
            if(s[i]>=97&&s[i]<=122)
            a[s[i]-97]=1;
        }
        for(int i=0;i<26;i++)
        if(a[i]) sum++;
        printf("%d\n",sum);
    }
    return 0;
} 
View Code

 

 

4.

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int ans;
 8     int n, m;
 9     while(scanf("%d%d", &n, &m)!=EOF)
10     {
11         ans = 1;
12         if(m<n-m) m = n-m;
13         for(int i=m+1; i<=n; i++)
14             ans*=i;
15         for(int i=1; i<=n-m; i++)
16             ans/=i;
17         printf("%d\n", ans);
18     }
19     return 0;
20 }
View Code

 

 

#include<cstdio>
int comb(int n,int m)
{
    if(m==0||n==m) 
    return 1;
    return comb(n-1,m)+comb(n-1,m-1);
}
int main()
{
    int m,n;
    while(scanf("%d%d",&n,&m)!=EOF){
        printf("%d\n",comb(n,m));
    }
    return 0;
}
View Code

 

5.

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     for(int i=5; i<=1000000; i++)
 8     {
 9         int sum = 1;
10         for(int j=2; j*j<=i; j++)
11         {
12             if(i%j==0) sum += j + i/j;
13             if(j*j==i) sum-=j; 
14         }
15         if(sum==i) printf("%d\n", i);
16     }
17     return 0;
18 }
View Code


 

 

#include<cstdio>
const int maxn=1000000;
int main()
{
    int s;
    for(int i=6;i<=maxn;i++){
        s=0;
        for(int j=1;j<i;j++){
            if(i%j==0)
            s+=j;
        }
        if(s==i) printf("%d\n",s);
    }
    return 0;
}
View Code

 

 

6.

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int ans=1;
 8     for(int i=10+1; i<=14; i++)
 9         ans*=i;
10     for(int i=1; i<=14-10; i++)
11         ans/=i;
12     printf("%d\n", ans);
13     return 0;
14 }
View Code

 

附加题:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5 
 6 bool vis[2000];
 7 int ans[2000];
 8 
 9 int main()
10 {
11     int a, b;
12     while(scanf("%d%d", &a, &b)!=EOF)
13     {
14         printf("%d", a/b);
15         if(a%b==0) {printf("\n"); continue;}
16         printf(".");
17         int flag = -1; int k=0; 
18         memset(vis, 0, sizeof(vis));
19         a = a%b; vis[a] = 1; ans[k++] = a;
20         while(a%b)
21         {
22             a *= 10;
23             int temp = a%b;
24             if(vis[temp])
25             {
26                 for(int i=0; i<k; i++)
27                 {
28                     if(temp==ans[i]) 
29                     {
30                         flag = i; break;
31                     }
32                 }
33                 break;
34             }
35             else 
36             {
37                 ans[k++] = temp;
38                 a = temp;
39                 vis[temp] = 1;
40             }
41         }
42         if(flag==-1)
43         {
44             for(int i=0; i<k-1; i++)
45                 printf("%d", ans[i]*10/b);
46         }
47         else
48         {
49             if(flag==0) printf("(");
50                 else
51                 {
52                     for(int i=0; i<flag; i++)
53                     printf("%d", ans[i]*10/b);   
54                     printf("(");
55                 }
56                 for(int i=flag; i<k; i++)
57                 printf("%d", ans[i]*10/b);
58                 printf(")");
59         }
60         printf("\n");
61     }
62     return 0;
63 }
View Code

 

 

 

posted @ 2015-09-25 13:25  草滩小恪  阅读(405)  评论(0编辑  收藏  举报