计算机历年考研复试上机基础题(一)

abc

题目描述

设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。

输入描述:

题目没有任何输入。

输出描述:

请输出所有满足题目条件的a、b、c的值。
a、b、c之间用空格隔开。
每个输出占一行。
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main(){
 6     for(int i=1;i<=9;i++){
 7         for(int j=1;j<=9;j++){
 8             for(int k=0;k<=9;k++){
 9                 int num1=i*100+j*10+k;
10                 int num2=j*100+k*10+k;
11                 int tmp=num1+num2;
12                 if(tmp==532){
13                     cout<<i<<' '<<j<<' '<<k<<endl;
14                 }
15             }
16         }
17     }
18     return 0;
19 }

 

 

最大公约数

题目描述

输入两个正整数,求其最大公约数。

输入描述:

测试数据有多组,每组输入两个正整数。

输出描述:

对于每组输入,请输出其最大公约数。
示例1

输入

49 14

输出

7
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 //欧几里德算法 两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数
 6 int gcd(int x,int y){
 7          if( y==0)
 8                   return x;
 9          return gcd(y,x%y);
10 }
11 
12 int main(){
13          int x,y;
14          while(scanf("%d%d",&x,&y)!=EOF){
15                   int sum=gcd(x,y);
16                   cout<<sum<<endl;
17          }
18 }

 

 

吃糖果

题目描述

名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0)。 妈妈告诉名名每天可以吃一块或者两块巧克力。 假设名名每天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。 例如: 如果N=1,则名名第1天就吃掉它,共有1种方案; 如果N=2,则名名可以第1天吃1块,第2天吃1块,也可以第1天吃2块,共有2种方案; 如果N=3,则名名第1天可以吃1块,剩2块,也可以第1天吃2块剩1块,所以名名共有2+1=3种方案; 如果N=4,则名名可以第1天吃1块,剩3块,也可以第1天吃2块,剩2块,共有3+2=5种方案。 现在给定N,请你写程序求出名名吃巧克力的方案数目。

输入描述:

输入只有1行,即整数N。

输出描述:

可能有多组测试数据,对于每组数据,
输出只有1行,即名名吃巧克力的方案数。
示例1

输入

4

输出

5

有点斐波那契数列的味道,emmm,
比如有5块巧克力,
那么,第一天,
  要不然吃一块,还剩4个,那么就是4块巧克力吃几天的问题,
要不然吃两块,还剩3块,那么及时3块巧克力吃几天的问题,
由题目可知,有1,2,3,4,5块巧克力能吃几天的数量已知,而N的上限不是很大,所以可按照斐波那契数列的思想迭代出来,所有N的情况(1<=N<=19)
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 int a[20]={0};
 5 
 6 int main(){
 7          int N;
 8          a[1]=1,a[2]=2;a[3]=3,a[4]=5;
 9          for(int i=5;i<=19;i++){
10                            a[i]=a[i-1]+a[i-2];
11         }
12          while(scanf("%d",&N)!=EOF){
13                   int tmp=a[N];
14                   cout<<tmp<<endl;
15          }
16          return 0;
17 }

 

 

数字求和

题目描述

给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?

输入描述:

输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。

输出描述:

可能有多组测试数据,对于每组数据,
输出一行,给出一个正整数,是5个数中小于a的数的和。
示例1

输入

10 1 2 3 4 11

输出

10
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 int main(){
 5     int tmp,num,sum=0;
 6     std::cout.sync_with_stdio(false);
 7     std::cin.sync_with_stdio(false);
 8         for(int i=0;i<6;i++){
 9             cin>>num;
10             if(i==0){
11                 tmp=num;
12             }else if(num<tmp){
13                 sum+=num;
14             }
15         }
16        cout<<sum<<endl;
17 }

 

 

Fibonacci 

题目描述

The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} are defined by the recurrence:     F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2     Write a program to calculate the Fibonacci Numbers.

输入描述:

    Each case contains a number n and you are expected to calculate Fn.(0<=n<=30) 。

输出描述:

   For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.
示例1

输入

1

输出

1
 1 #include <bits/stdc++.h>
 2 #include <stdio.h>
 3 using namespace std;
 4 int a[32]={0};
 5 int main(){
 6     a[0]=0,a[1]=1;a[2]=1;
 7     for(int i=3;i<=30;i++){
 8         a[i]=a[i-1]+a[i-2];
 9     }
10     int n;
11     cin>>n;
12     cout<<a[n]<<endl;
13     return 0;
14 }

 

 

三角形的边

题目描述

给定三个已知长度的边,确定是否能够构成一个三角形,这是一个简单的几何问题。我们都知道,这要求两边之和大于第三边。实际上,并不需要检验所有三种可能,只需要计算最短的两个边长之和是否大于最大那个就可以了。 这次的问题就是:给出三个正整数,计算最小的数加上次小的数与最大的数之差。

输入描述:

每一行包括三个数据a, b, c,并且都是正整数,均小于10000。

输出描述:

对于输入的每一行,在单独一行内输出结果s。s=min(a,b,c)+mid(a,b,c)-max(a,b,c)。上式中,min为最小值,mid为中间值,max为最大值。
示例1

输入

1 2 3

输出

0
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main(){
 6     int a[3]={0};
 7     int sum=0;
 8     for(int i=0;i<3;i++){
 9         cin>>a[i];
10         sum+=a[i];
11     }
12     int mmin=a[0];
13     int mmax=a[0];
14     for(int i=1;i<3;i++){
15         if(mmin>a[i])
16             mmin=a[i];
17         if(mmax<a[i])
18             mmax=a[i];
19     }
20     int mmid=sum-mmin-mmax;
21     cout<<(mmin+mmid)-mmax<<endl;
22     return 0;
23 }

 

 

数字之和

题目描述

对于给定的正整数 n,计算其十进制形式下所有位置数字之和,并计算其平方的各位数字之和。

输入描述:

每行输入数据包括一个正整数n(0<n<40000)

输出描述:

对于每个输入数据,计算其各位数字之和,以及其平方值的数字之和,输出在一行中,之间用一个空格分隔,但行末不要有空格。
示例1

输入

4
12
97
39999

输出

4 7
3 9
16 22
39 36
 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main(){
 6     long n,len=0;
 7     int a[20]={0};
 8     int b[20]={0};
 9     cin>>n;
10     long num=n*n;
11     while(n){
12         len++;
13         a[len]=n%10;
14         n=(n-a[len])/10;
15     }
16     int sum1=0;
17     for(int j=1;j<=len;j++){
18         sum1+=a[j];
19     }
20     len=0;
21     while(num){
22         b[len]=num%10;
23         num=(num-b[len])/10;
24         len++;
25     }
26     int sum2=0;
27     for(int j=0;j<=len;j++){
28         sum2+=b[j];
29     }
30     cout<<sum1<<' '<<sum2<<endl;
31     return 0;
32 }

 

 

求平均年龄

题目描述

班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

输入描述:

第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,取值为15到25。

输出描述:

可能有多组测试数据,对于每组数据,
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式: 
printf("%.2f", num);
示例1

输入

2
18
17

输出

17.50
 1 #include <bits/stdc++.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 
 5 using namespace std;
 6 
 7 int main(){
 8     int n;
 9     scanf("%d", &n);
10     int num=0;
11     float sum=0;
12     for(int i=1;i<=n;i++){
13         scanf("%d", &num);
14         sum+=num;
15     }
16     printf("%.2f", (sum/n));
17     return 0;
18 }

 

 

Digital Roots

题目描述

The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.     For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.

输入描述:

    The input file will contain a list of positive integers, one per line. 
The integer may consist of a large number of digits.

输出描述:

    For each integer in the input, output its digital root on a separate line of the output.
示例1

输入

24
39

输出

6
3
思想就是,例如24 ,2+4=6, 6大于等于10,满足
       39 ,3+9=12 大于10, 然后就变成1+2=3, 3满足条件
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 
 8 using namespace std;
 9 int a[12]={0};
10 
11 int fun(int n){
12     int sum=0,i=0;
13     memset(a,0,sizeof(a));
14     while(n){
15         a[i]=n%10;
16         sum+=a[i];
17         n=(n-a[i])/10;
18         i++;
19     }
20     return sum;
21 }
22 
23 int main(){
24     int n;
25     scanf("%d",&n);
26     int tmp=fun(n);
27     while(tmp>=10)
28         tmp=fun(tmp);
29     printf("%d\n",tmp);
30     return 0;
31 }

 

 

百鸡问题

题目描述

用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。

输入描述:

    测试数据有多组,输入n。

输出描述:

    对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
示例1

输入

40

输出

x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #define maxn 100
 8 using namespace std;
 9 
10 int main(){
11     int n;
12     scanf("%d",&n);
13     for(int x=0;x<=n/5;x++){
14         for(int y=0;y<=(n-5*x)/3;y++){
15             for(int z=0;z<=(n-5*x-3*y)*3;z++){
16                 if(x+y+z==100){
17                     printf("x=%d,y=%d,z=%d\n",x,y,z);
18                 }
19             }
20         }
21     }
22     return 0;
23 }

 

 

字符串排序

题目描述

输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果

输入描述:

 一个字符串,其长度n<=20

输出描述:

 输入样例可能有多组,对于每组测试样例,
按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果
示例1

输入

dcba

输出

abcd

小析:理解字符和ASCII码的输出
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 22
 9 using namespace std;
10 
11 int a[maxn]={0};
12 char str[22];
13 int main(){
14     scanf("%s",&str);
15     for(int i=0;i<=20;i++){
16         a[i]=str[i];
17     }
18     sort(a,a+20);
19     for(int i=0;i<=20;i++){
20         if(a[i])
21             printf("%c",a[i]);
22     }
23     return 0;
24 }

 

 

xxx定律

题目描述

对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。     请计算需要经过几步才能将n变到1,具体可见样例。

输入描述:

    测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1<=n<=10000)

输出描述:

    对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。
示例1

输入

3
1
0

输出

5
0
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 22
 9 using namespace std;
10 
11 int a[maxn]={0};
12 char str[22];
13 int main(){
14     int n=0;
15     while(scanf("%d",&n)!=EOF){
16             int sum=0;
17             if(n==0){
18                 printf("0\n");
19                 return 0;
20             }
21         while(n!=1){
22         if(n%2==0){
23             n=n/2;
24             sum++;
25         }else{
26             n=n*3+1;
27             n=n/2;
28             sum++;
29         }
30     }
31     printf("%d\n",sum);
32     }
33     return 0;
34 }

 

 

字符串内排序

题目描述

输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串。

输入描述:

测试数据有多组,输入字符串。

输出描述:

对于每组输入,输出处理后的结果。
示例1

输入

bacd

输出

abcd

小析:和上面那题基本上没什么区别
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 220
 9 using namespace std;
10 
11 int a[maxn]={0};
12 char str[220];
13 int main(){
14     scanf("%s",&str);
15     for(int i=0;i<=200;i++){
16         a[i]=str[i];
17     }
18     sort(a,a+200);
19     for(int i=0;i<=200;i++){
20         if(a[i])
21             printf("%c",a[i]);
22     }
23     return 0;
24 }

 

 

神奇的口袋

题目描述

有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。

输入描述:

输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值。

输出描述:

输出不同的选择物品的方式的数目。
示例1

输入

3
20
20
20

输出

3
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 50
 9 using namespace std;
10 
11 int a[maxn]={0};
12 int dp[100][43]; //数组大小
13 
14 int main(){
15     int n=0;
16     scanf("%d",&n);
17     for(int i=1;i<=n;i++){
18         scanf("%d",&a[i]);
19         dp[i][0]=1;
20     }
21     dp[0][0]=1;
22     for(int i=1;i<=n;i++){
23         for(int j=1;j<=40;j++){
24             dp[i][j]=dp[i-1][j];
25             if(j>=a[i])
26                 dp[i][j]+=dp[i-1][j-a[i]];
27            //cout<<dp[i][j]<<" ";
28         }
29        // cout<<endl;
30     }
31     cout<<dp[n][40]<<endl;
32     return 0;
33 }

 

 

统计同成绩的人数

题目描述

读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入描述:

测试输入包含若干测试用例,每个测试用例的格式为第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

输出描述:

对每个测试用例,将获得给定分数的学生人数输出。
示例1

输入

3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0

输出

1
0
2
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 110
 9 using namespace std;
10 
11 int a[maxn]={0};
12 
13 int main(){
14     int n=0;
15     while(scanf("%d",&n)!=EOF){
16             if(n==0) return 0;
17             int tmp;
18         for(int i=0;i<n;i++){
19             scanf("%d",&tmp);
20             a[tmp]++;
21         }
22         int key=0;
23         scanf("%d",&key);
24         printf("%d\n",a[key]);
25     }
26     return 0;
27 }

 

 

数组逆置

题目描述 

输入一个字符串,长度小于等于200,然后将数组逆置输出。

输入描述:

测试数据有多组,每组输入一个字符串。

输出描述:

对于每组输入,请输出逆置后的结果。
示例1

输入

hdssg

输出

gssdh
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 210
 9 using namespace std;
10 
11 char a[maxn]={'0'};
12 
13 int main(){
14     scanf("%s",&a);
15     int len=strlen(a);
16     for(int i=len-1;i>=0;i--){
17             printf("%c",a[i]);
18     }
19 
20     return 0;
21 }

 

 

 

Skew数

题目描述 

在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1)。 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, 10120(skew) = 1*(25-1) + 0*(24-1) + 1*(23-1) + 2*(22-1) + 0*(21-1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew数是 0、1、2、10、11、12、20、100、101、以及102。

输入描述:

输入包含一行或多行,每行包含一个整数n。如果 n = 0 表示输入结束,否则n是一个skew数

输出描述:

可能有多组测试数据,对于每一个输入,
输出它的十进制表示。转换成十进制后, n 不超过 231-1 = 2147483647
示例1

输入

10120
200000000000000000000000000000
10
1000000000000000000000000000000
11
100
11111000001110000101101102000
0

输出

44
2147483646
3
2147483647
4
7
1041110737
,快速幂,然后按着给定的公式来,数字比较大,以字符形式接收,如a[1]='1',a[1]-'0'=1, 把字符1转换为了数字1,
快速幂思想就是把幂二进制化,然后运用&运算取得最后一位二进制位,<<运算,将二进制数右移一位,


 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 50
 9 using namespace std;
10 
11 char a[maxn]={'0'};
12 long long pow(int a,int  b){
13     long long sum=1;
14     while(b){
15         if(b&1)
16             sum=sum*a;
17         a*=a;
18         b>>=1;
19     }
20     return sum;
21 }
22 
23 int main(){
24     scanf("%s",&a);
25     int len=strlen(a);
26     int k=len;
27     long long sum=0,tmp=0;
28     for(int i=0;i<len;i++){
29         tmp=(a[i]-'0')*(pow(2,k)-1);
30         sum+=tmp;
31         k--;
32     }
33     cout<<sum<<endl;
34     return 0;
35 }

 

 

放苹果

题目描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入描述:

每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

输出描述:

对输入的每组数据M和N,用一行输出相应的K。
示例1

输入

复制
7 3

输出

复制
8

苹果和盘子的故事
对于两个都可变化数量的物体,要固定其中一个才好分析
这里选择固定盘子(因为苹果可以不限制数目的放在盘子里) m个苹果,n个盘子,用递归的方法可以解决
递归体
  当m>=n时,苹果数量多,盘子数量少,那么
       当空出一个盘子后(因为是递归,所以这里的“一”不是真正的一,n-1,n-2,n-3...)
          fun(m,n)=fun(m,n-1)
       不留空盘子,那么,此时花费(m-n)个苹果,
          fun(m,n)=fun(m-n,n);

  当m<n时,苹果数量少,空盘子对结果无增益,所以本题可忽略,那么就转化为在m个盘子里放置m个苹果的故事,
      fun(m,n)=fun(m,m)

  总计为:fun(m,n)=fun(m,n-1)+fun(m-n,n)
结束条件

  当m==0,时,我们结束递归,return 1;
   当n==1,时,只剩下一个盘子啦,就只有一种情况,return 1;

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 50
 9 using namespace std;
10 
11 char a[maxn]={'0'};
12 int fun(int m,int n){
13     if(m==0||n==1) return 1;
14     if(m<n)
15         return fun(m,m);
16     else
17         return fun(m,n-1)+fun(m-n,n);
18 }
19 
20 int main(){
21     int m,n;
22     scanf("%d%d",&m,&n);
23     int ans=fun(m,n);
24     printf("%d\n",ans);
25     return 0;
26 }

 

 

Zero-complexity

题目描述 

You are given a sequence of integer numbers. Zero-complexity transposition of the sequence is the reverse of this sequence. Your task is to write a program that prints zero-complexity transposition of the given sequence.

输入描述:

For each case, the first line of the input file contains one integer n-length of the sequence (0 < n ≤ 10 000). The second line contains n integers numbers-a1, a2, …, an (-1 000 000 000 000 000 ≤ ai ≤ 1 000 000 000 000 000).

输出描述:

For each case, on the first line of the output file print the sequence in the reverse order.
示例1

输入

5
-3 4 6 -8 9

输出

9 -8 6 4 -3

数组的翻转

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #define maxn 10010
 9 using namespace std;
10 
11 long long a[maxn];
12 
13 int main(){
14     int n;
15     scanf("%d",&n);
16     for(int i=0;i<n;i++){
17         scanf("%d",&a[i]);
18     }
19     for(int i=n-1;i>=0;i--){
20         printf("%d ",a[i]);
21     }
22     return 0;
23 }

 

 

子串计算

题目描述

给出一个01字符串(长度不超过100),求其每一个子串出现的次数。

输入描述:

输入包含多行,每行一个字符串。

输出描述:

对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。
示例1

输入

10101

输出

0 2
01 2
1 3
10 2
101 2

从左到右找出每一种组合,用map这种的键值对,来对每一种情况进行计数
 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <stdlib.h>
 4 #include <string>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <iostream>
 8 #include <map>
 9 #define maxn 10010
10 
11 using namespace std;
12 
13 map<string,int> m;
14 
15 int main(){
16     string str;
17     cin>>str;
18     int len=str.length();
19     if(len==1)
20         return 0;
21     for(int i=0;i<len;i++){
22         for(int j=1;j<=len-i;j++){
23                 string tmp=str.substr(i,j);
24                 //cout<<tmp<<endl;
25                 m[tmp]++;
26         }
27         //cout<<"********************"<<endl;
28     }
29     map<string,int>::iterator it;
30     it=m.begin();
31     while(it!=m.end()){
32             if(it->second>1){
33                cout<<it->first<<" "<<it->second<<endl;
34             }
35         it++;
36     }
37 
38     return 0;
39 }
View Code

 






  
  





转载于:https://www.cnblogs.com/z-712/p/10465559.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS选择器的权重与优先规则

2019独角兽企业重金招聘Python工程师标准>>> 我们在使用CSS对网页元素定义样式时经常会遇到这种情况&#xff1a;要对一般元素应用一般样式&#xff0c;然后在更特殊的元素上覆盖它们。那么我们怎么样来保证我们所新定义的元素样式能覆盖目标元素上原有的样式呢&…

201671030130+词频统计软件项目报告

&#xff08;一&#xff09;需求分析 根据实验二 软件工程个人项目的要求该软件项目的基本功能要求如下&#xff1a; 1.程序可读入任意英文文本文件&#xff0c;该文件中英文词数大于等于1个。 2.程序需要很壮健&#xff0c;能读取容纳英文原版《哈利波特》10万词以上的文章。 …

php系统维护,软件系统维护主要包含什么

软件系统维护主要包含软件系统正常使用要求与定期维护、软件系统初始化安装的维护准备。软件是用户与硬件之间的接口界面&#xff0c;用户主要是通过软件与计算机进行交流。本文操作环境&#xff1a;windows系统、thinkpad t480电脑。(学习视频分享&#xff1a;编程视频)计算机…

一个C#写的调用外部进程类

2008-05-21 07:00 作者&#xff1a; 肖波 出处&#xff1a; 天极网 C# 调用外部进程的类&#xff0c;网上可以搜出很多来&#xff0c;为什么要再写一遍&#xff0c;实在是因为最近从网上拷贝了一个简单的例程用到项目中&#xff0c;运行有问题&#xff0c;后来研究了半天&#…

【编程题目】复杂链表的复制☆

76.复杂链表的复制&#xff08;链表、算法&#xff09;题目&#xff1a;有一个复杂链表&#xff0c;其结点除了有一个 m_pNext 指针指向下一个结点外&#xff0c;还有一个 m_pSibling 指向链表中的任一结点或者 NULL。其结点的 C定义如下&#xff1a;struct ComplexNode{ int m…

mssql sqlserver 不固定行转列数据(动态列)

mssql sqlserver 不固定行转列数据(动态列) 原文:mssql sqlserver 不固定行转列数据(动态列)转自:http://www.maomao365.com/?p5471摘要: 下文主要讲述动态行列转换语句&#xff0c;列名会根据行数据的不同&#xff0c; 动态的发生变化 -------------------------------------…

在php里让字体划过变色,鼠标划过字体时如何用css来实现字体变色?(代码实测)...

当我们在浏览网页时&#xff0c;鼠标划过某段文字会出现变色效果&#xff0c;这就是css字体变色&#xff0c;一方面是为了主动吸引人用户目光去点击&#xff0c;另一方面是为了防止用户点击错其他文字段落。其实这种css鼠标经过字体变色的效果是非常容易实现的。只要你略懂css知…

初识python之 APP store排行榜 蜘蛛抓取(一)

直接上干货&#xff01;&#xff01; 采用python 2.7.5-windows 打开 http://www.apple.com/cn/itunes/charts/free-apps/ 如上图可以见采用的是utf-8 编码 经过一番思想斗争 编码如下 &#xff08;拍砖别打脸&#xff09; #codingutf-8 import urllib2 import urllib …

PP团队圣经巨著《Application Architecture Guide2.0》14章-数据访问层

第十四章 数据访问层指导 概览 这一章主要描述设计数据访问层时要注意的主要原则。它们覆盖了设计数据访问层遇到的通常问题及错误。下面的图表展示了数据层怎样嵌入一个通用的应用架构。 (cnblog我的图片一直上传不了&#xff0c;报Remote server Error,只能使用网络图片了) 数…

20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1

第03节: 不规则底部工具栏制作-1 博客地址&#xff1a; https://jspang.com/post/flutterDemo.html#toc-973 视频地址&#xff1a; https://www.bilibili.com/video/av39709290?p3 视频里面的评论&#xff1a;动态组件就是可以setState的组件 flutter create demo02的项目 这里…

python模块之smtplib: 用python发送SSL/TLS安全邮件

转载请注明原文出自 http://blog.csdn.net/zhaoweikid/ python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。smtp协议的基本命令包括&#xff1a; HELO 向服务器标识用户身份 MAIL 初始化邮件传输 mail from: RCPT 标识单个的邮件…

B-树

6.7 B-树★4◎3 1&#xff0e;B-树的定义  B-树是一种平衡的多路查找树&#xff0c;它在文件系统中很有用。  定义&#xff1a;一棵m阶的B-树&#xff0c;或者为空树&#xff0c;或为满足下列特性的m叉树&#xff1a;  &#xff08;1&#xff09;树中每个结点至多有m棵子…

mysql数据库交叉连接,MySQL数据库联合查询与连接查询

联合查询基本概念联合查询是可合并多个相似的选择查询的结果集。等同于将一个表追加到另一个表&#xff0c;从而实现将两个表的查询组合在一起&#xff0c;使用为此为UNINO或UNION ALL联合查询&#xff1a;将多个查询的结果合并到一起(纵向合并)&#xff1a;字段数不变&#xf…

原创:MD5 32位加密软件

网站后台数据库切勿使用明文保存密码&#xff0c;否则一旦黑客拿下你的Webshell&#xff0c;后果不堪设想。网站后台密码加密大多数采用的就是MD5算法加密。今天给大家送一个本人用c#简单编写的MD5 32位加密程序&#xff0c;虽然没有什么技术含量&#xff0c;但保证没有后门。 …

(教学思路 c#之类一)声明类和对象、定义类成员及其引用

上一节&#xff08;教学思路 c#之面向对象二&#xff09;初步理解面向对象的基本概念中&#xff0c;我没有提到任何的代码&#xff0c;只是用语言和实例来说明什么是类和对象以及面向对象的特性等基本概念&#xff0c;类是c#程序语言的重要核心&#xff0c;也是构建应用程序最主…

【springboot】之自动配置原理

使用springboot开发web应用是很方便&#xff0c;只需要引入相对应的GAV就可以使用对应的功能&#xff0c;springboot默认会帮我们配置好一些常用配置。那么springboot是怎么做到的呢?这篇文章将一步步跟踪源码&#xff0c;查看springboot到底是如何帮我们做自动化配置。 sprin…

阴雨连绵潮湿加剧 车辆防潮提升保值

近日来&#xff0c;申城阴雨绵绵&#xff0c;不但增加了行车的难度&#xff0c;也使爱车潮气严重&#xff0c;开上一会就会发现前车窗布满水汽&#xff0c;需要开空调吹干才能保证良好视野。此外潮气也容易对人体和车辆本身造成影响&#xff0c;首当其冲的是车内电器&#xff0…

php nsdata,iOS开发之数据存储之NSData

1、概述使用archiveRootObject:toFile:方法可以将一个对象直接写入到一个文件中&#xff0c;但有时候可能想将多个对象写入到同一个文件中&#xff0c;那么就要使用NSData来进行归档对象。NSData可以为一些数据提供临时存储空间&#xff0c;以便随后写入文件&#xff0c;或者存…

asp.net控件开发基础(19)

上两篇讨论了基本数据绑定控件的实现步骤&#xff0c;基本上我们按着步骤来就可以做出简单的数据绑定控件了。过年前在看DataGrid的实现&#xff0c;本来想写这个的&#xff0c;但2.0出了GridView了&#xff0c;再说表格控件实现比较复杂&#xff0c;所以先放着。我们一起打开M…

1048 Find Coins

水题&#xff0c;详见代码&#xff5e; #include <iostream> #include <string.h> #include <cstdio> #include <algorithm> #include <cstdlib> #include <math.h> #include <queue> #include <stack> #include <vector&g…