• 数学问题


     

    A + B分数: 1.8

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:171
    解决: 85

    标签

    • A+B
    • 字符串与数字对应
    • 字符串处理

    题目描述

    读入两个小于100的正整数A和B,计算A+B.
    需要注意的是:A和B的每一位数字由对应的英文单词给出.

    输入格式

    测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.

    输出

    对每个测试用例输出1行,即A+B的值.

    样例输入

    one + two =
    three four + five six =
    zero seven + eight nine =
    zero + zero =

    样例输出

    3
    90
    96

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 浙江大学研究生复试上机真题
    •  
    •  
    •  
    • 这题天勤书上 “=”前面和“+”两边是没有空格的,但是
    • 原题是有的== 害我调试的半天   坑爹!!
    •  1 #include<iostream>
       2 #include<string>
       3 using namespace std;
       4  
       5 int zhuan(string s)
       6 {
       7    if(s=="zero") return 0;
       8    if(s=="one") return 1;
       9    if(s=="two") return 2;
      10    if(s=="three") return 3;
      11    if(s=="four") return 4;
      12    if(s=="five") return 5;
      13    if(s=="six") return 6;
      14    if(s=="seven") return 7;
      15    if(s=="eight") return 8;
      16    if(s=="nine") return 9;
      17 }
      18 int main()
      19 {
      20 string s;
      21 while(cin>>s)
      22 {
      23 int n=0;
      24 int n1=0;int n2=0;
      25 string ss[6];
      26 ss[n]=s;
      27 n++;
      28       while(cin>>s)
      29   {
      30    ss[n]=s;
      31    if(ss[n]=="=") break;
      32    n++;
      33   }
      34       if(ss[0]=="zero"&&ss[2]=="zero") break;
      35   int i=0;
      36   while(ss[i]!="+")
      37   {
      38     n1=n1*10+zhuan(ss[i]);
      39 i++;
      40   }
      41   i++;
      42    while(ss[i]!="=")
      43   {
      44     n2=n2*10+zhuan(ss[i]);
      45 i++;
      46   }
      47    cout<<n1+n2<<endl;
      48 }
      49  return 0;
      50 }
    •  












    Fibonacci分数: 1

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:87
    解决: 46

    标签

    • 斐波那契数列

    题目描述

    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 #include <iostream>
       2 using namespace std;
       3 int fi[30];
       4 int main()
       5 {
       6  fi[0]=0;
       7  fi[1]=1;
       8  for(int i=2;i<=30;i++)
       9  {
      10     fi[i]=fi[i-1]+fi[i-2];
      11  }
      12 int n;
      13  while(cin>>n)
      14  {
      15     cout<<fi[n]<<endl;
      16  }
      17     return 0;
      18 }
    •  









    对称平方数分数: 1.2

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:129
    解决: 67

    标签

    • 简单数学题
    • 对称平方数

    题目描述

    打印所有不超过256,其平方具有对称性质的数。如2,11就是这样的数,因为2*2=4,11*11=121。

    输入格式

    无任何输入数据

    输出

    输出具有题目要求的性质的数。如果输出数据不止一组,各组数据之间以回车隔开。

    样例输入

    样例输出

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 清华大学研究生复试上机真题
    •  
    •  
    •  
    •  
    •  1 #include <iostream>
       2 #include <sstream>
       3 #include <string>
       4 #include <algorithm>
       5 using namespace std;
       6 int main()
       7 {
       8   
       9    for(int i=0;i<256;i++)
      10    {
      11    string s;
      12    stringstream ss;
      13    ss<<i*i;
      14    ss>>s;
      15    string s2=s;
      16    reverse(s.begin(),s.end());
      17    if(s2==s) cout<<i<<endl;
      18    }
      19    
      20     return 0;
      21 }
    •  


















    最大公约数分数: 1

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:79
    解决: 50

    标签

    • 简单数学题
    • 最大公约数

    题目描述

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

    输入格式

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

    输出

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

    样例输入

    49 14

    样例输出

    7

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 哈尔滨工业大学究生复试上机真题
    •  
    •  
    •  1 #include <iostream>
       2 #include <algorithm>
       3 using namespace std;
       4 int maxyue(int m,int n)
       5 {
       6  
       7    int temp=n;
       8    n=m%n;
       9    m=temp;
      10    if(n==0) return m;
      11    else return maxyue(m,n);
      12 }
      13 int main()
      14 {
      15    int n1,n2,m,n;
      16    while(cin>>n1)
      17    {
      18     cin>>n2;
      19     if(n1>n2) 
      20 {
      21   m=n1;n=n2;
      22 }
      23 else
      24 {
      25  m=n2;n=n1;
      26 }
      27    int yue=maxyue(m,n);
      28 cout<<yue<<endl;
      29    }
      30     return 0;
      31 }
    •  















    完数分数: 1.5

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:173
    解决: 60

    标签

    • 简单数学题
    • 分解因子
    • 完数

    题目描述

        求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子相加和的数。

    输入格式

        测试数据有多组,输入n,n数据范围不大。

    输出

        对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。

    样例输入

    6

    样例输出

    6

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 哈尔滨工业大学究生复试上机真题
    •  
    •  
    •  1 #include <iostream>
       2 #include <math.h>
       3 using namespace std;
       4 bool IsPerfect(int n)
       5 {
       6    int len=(int)sqrt((double)n);
       7    int sum=1;//当n>1时,1是真因子,n不是
       8    for(int i=2;i<=len;i++)
       9    {
      10      if(n%i==0) sum+=i+n/i;//加上自己 和 对应的真因子
      11    }
      12    //若存在整数x,n=x*x,则x多加了一次
      13    if(n==len*len)  sum-=len;//当n=1时,在这里已经排除
      14    bool temp;
      15    if(sum==n) temp=true;
      16    else temp=false;
      17    return temp;
      18 }
      19 int main()
      20 {
      21    int n;
      22    while(cin>>n)
      23    {
      24      int i;
      25 for( i=1;i<=n;i++)
      26 if(IsPerfect(i))
      27 {
      28   cout<<i;break;
      29 }
      30 for(int j=i+1;j<=n;j++)
      31         if(IsPerfect(j))
      32 {
      33   cout<<" "<<j;
      34 }
      35    cout<<endl;
      36    }
      37     return 0;
      38 }
    •  











    素数判定分数: 1

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:167
    解决: 76

    标签

    • 素数判定

    题目描述

    给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。

    输入格式

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

    输出

    对于每组输入,若是素数则输出yes,否则输入no。

    样例输入

    13

    样例输出

    yes

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 哈尔滨工业大学究生复试上机真题
    •  
    •  
    •  1 #include <iostream>
       2 using namespace std;
       3 int main()
       4 {
       5    int n;
       6    while(cin>>n)
       7    {
       8  bool su=1;
       9  for(int i=2;i<n;i++)
      10  {
      11    if(n%i==0) 
      12    {
      13       su=0;
      14   break;
      15    }
      16  }
      17  if(su&&n>1) cout<<"yes"<<endl;
      18  else cout<<"no"<<endl;
      19    }
      20     return 0;
      21 }
    •  












    N的阶乘分数: 2.5

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:91
    解决: 27

    标签

    • 数学题

    题目描述

    输入一个正整数N,输出N的阶乘。

    输入格式

    正整数N(0<=N<=1000)

    输出

    输入可能包括多组数据,对于每一组输入数据,输出N的阶乘

    样例输入

    0
    4
    7

    样例输出

    1
    24
    5040

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 清华大学研究生复试上机真题
    •  
    •  
    •  
    •  
    • 这题目有点小纠结
    •  
    •  
    • 自己写的大整数乘法:
    •  
    •  1 #include<iostream>
       2 #include<string>
       3 using namespace std;
       4 typedef struct {
       5 int num[1001];
       6 int length;
       7 }BigInt;
       8 //大数相加
       9 BigInt add(BigInt lon,BigInt sho)
      10 {
      11     BigInt temp;
      12 for(int i=0;i<sho.length;i++)
      13 {
      14 temp.num[i]=lon.num[i]+sho.num[i];
      15 }
      16 for(int i=sho.length;i<lon.length;i++)
      17 {
      18 temp.num[i]=lon.num[i];
      19 }
      20         for(int i=0;i<lon.length-1;i++)
      21 {
      22 if(temp.num[i]>9) 
      23 {
      24 temp.num[i+1]++;
      25 temp.num[i]=temp.num[i]-10;
      26 }
      27 }
      28 if(temp.num[lon.length-1]>9) 
      29 {
      30 temp.num[lon.length]=1;
      31 temp.num[lon.length-1]=temp.num[lon.length-1]-10;
      32 temp.length=lon.length+1;
      33 }
      34 else
      35            temp.length=lon.length;
      36 return temp;
      37 }
      38 //大数乘小整数
      39 BigInt mul(BigInt big,int a)
      40 {
      41    BigInt temp=big;
      42    for(int i=0;i<a-1;i++)
      43    temp=add(temp,big);
      44    return temp;
      45 }
      46 int main()
      47 {
      48       int n;
      49 while(cin>>n)
      50 {
      51   BigInt a;
      52   a.length=1;
      53   a.num[0]=1;
      54  
      55   for(int i=n;i>=1;i--)
      56   {
      57      a=mul(a,i);
      58   }
      59    for(int i=a.length-1;i>=0;i--)
      60   {
      61   cout<<a.num[i];
      62   }
      63    cout<<endl;
      64 }
      65 return 0;
      66 }
    •  
    • 果断超时了
    • 天勤书上面的代码也是超时的==}} 
      1 #include<iostream>
      2 
      3 #include<string>
      4 
      5 using namespace std;
      6 
      7  
      8 
      9 typedef struct {
     10 
     11 int num[1001];
     12 
     13 int length;
     14 
     15 }BigInt;
     16 
     17  
     18 
     19 //大数相乘
     20 
     21 BigInt mul(BigInt lon,BigInt sho)
     22 
     23 {
     24 
     25    BigInt temp;
     26 
     27 temp.length=0;
     28 
     29 for(int m=0;m<sho.length+lon.length+1;m++)
     30 
     31     temp.num[m]=0;//n位数*m位数 所得到的最大位数为n+m;初始化各各位置
     32 
     33  
     34 
     35 for(int i=0;i<sho.length;i++)
     36 
     37 for(int j=0;j<lon.length;j++)
     38 
     39 temp.num[i+j]=temp.num[i+j]+lon.num[j]*sho.num[i];
     40 
     41  
     42 
     43 //调整进位
     44 
     45  
     46 
     47 while(temp.length<lon.length+sho.length-1||temp.num[temp.length]!=0)
     48 
     49 {
     50 
     51 temp.num[temp.length+1]=temp.num[temp.length+1]+temp.num[temp.length]/10;//如果最后一位没进位,则m+n位为0
     52 
     53 temp.num[temp.length]=temp.num[temp.length]%10;
     54 
     55 temp.length++;
     56 
     57 }
     58 
     59  
     60 
     61 return temp;
     62 
     63 }
     64 
     65  
     66 
     67 BigInt zhuan(int n)//将int转成大数,倒着存放
     68 
     69 {
     70 
     71    BigInt temp;
     72 
     73    temp.length=0;
     74 
     75    while(n)
     76 
     77    {
     78 
     79   temp.num[temp.length]=n%10;
     80 
     81   n=n/10;
     82 
     83   temp.length++;
     84 
     85    }
     86 
     87     
     88 
     89    return temp;
     90 
     91 }
     92 
     93  
     94 
     95 int main()
     96 
     97 {
     98 
     99 int n; 
    100 
    101 while(cin>>n)
    102 
    103 {
    104 
    105  BigInt a=zhuan(1);
    106 
    107  
    108 
    109  for(int i=2;i<=n;i++)
    110 
    111  {
    112 
    113     a=mul(a,zhuan(i));
    114 
    115  }
    116 
    117   for(int k=a.length-1;k>=0;k--)
    118 
    119  {
    120 
    121  cout<<a.num[k];
    122 
    123  }
    124 
    125   cout<<endl;
    126 
    127 }
    128 
    129 return 0;
    130 
    131 }

    最后,在王道论坛上看到牛人代码:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 
     7 {
     8 
     9     int n;
    10 
    11     while (cin>>n)
    12 
    13     {
    14 
    15         int i, j;
    16 
    17 int res[10010]={0};
    18 
    19         res[0] = 1;
    20 
    21         res[1] = 1;
    22 
    23         for (i = 2; i <= n; i++)
    24 
    25         {
    26 
    27             for (j = 1; j <= res[0]; j++)
    28 
    29                 res[j] = res[j] * i;
    30 
    31             
    32 
    33             for (j = 1; j <= res[0]; j++)
    34 
    35             {
    36 
    37                 if (res[j] >= 10)
    38 
    39                 {
    40 
    41                     res[j+1] += res[j] / 10;
    42 
    43                     res[j] %= 10;
    44 
    45                     if (j == res[0])
    46 
    47                         res[0]++;
    48 
    49                 }
    50 
    51             }
    52 
    53         }
    54 
    55         for (i = res[0]; i >= 1; i--)
    56 
    57            cout<<res[i];
    58 
    59         cout<<endl;
    60 
    61     }
    62 
    63     return 0;
    64 
    65 } 








    数字求和分数: 1

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:87
    解决: 55

    标签

    • 简单模拟计算

    题目描述

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

    输入格式

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

    输出

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

    样例输入

    10 1 2 3 4 11

    样例输出

    10

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 北京大学研究生复试上机真题
    •  
    •  1 #include<iostream>
       2 using namespace std;
       3 int main()
       4 {
       5 int n[5];
       6    int a;
       7    while(cin>>a)
       8    {
       9       for(int i=0;i<5;i++)
      10   cin>>n[i];
      11   int sum=0;
      12    for(int i=0;i<5;i++)
      13    if(n[i]<a) sum=sum+n[i];
      14    cout<<sum<<endl;
      15    }
      16 return 0;
      17 }
    •  









    A+B分数: 2

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:92
    解决: 55

    标签

    • 字符串处理

    题目描述

    给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
    现在请计算A+B的结果,并以正常形式输出。

    输入格式

    输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

    输出

    请计算A+B的结果,并以正常形式输出,每组数据占一行。

    样例输入

    -234,567,890 123,456,789
    1,234 2,345,678

    样例输出

    -111111101
    2346912

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 浙江大学研究生复试上机真题
    •  
    •  
    •  
    •  
    •  1 #include <iostream>
       2 #include <algorithm>
       3 #include<string>
       4 #include<sstream>
       5 using namespace std;
       6 string clear(string s)
       7 {
       8        for(int i=0;i<s.length();i++)
       9    {
      10    if(s[i]==',')  s=s.substr(0,i)+s.substr(i+1,s.length()-i); 
      11    }
      12    return s;
      13 }
      14 int main()
      15 {
      16 string s1,s2;
      17 while(cin>>s1)
      18 {
      19    cin>>s2;
      20    s1=clear(s1);s2=clear(s2);
      21    stringstream ss1,ss2;
      22    long n1,n2,sum;
      23    ss1<<s1;
      24    ss1>>n1;
      25    ss2<<s2;
      26    ss2>>n2;
      27    sum=n1+n2;
      28    cout<<sum<<endl;
      29 }
      30   return 0;
      31 }
    •  










    数字之和分数: 1.5

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:84
    解决: 54

    标签

    • 简单计算

    题目描述

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

    输入格式

    每行输入数据包括一个正整数n(0<n<40000),如果n=0 表示输入结束,并不用计算。

    输出

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

    样例输入

    4
    12
    97
    39999
    0

    样例输出

    4 7
    3 9
    16 22
    39 36

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 吉林大学究生复试上机真题
    •  
    •  
    •  1 #include <iostream>
       2 #include <algorithm>
       3 #include<string>
       4 #include<sstream>
       5 using namespace std;
       6 int ch[128]={0};
       7 int all(string s)
       8 {
       9    int sum=0;
      10    for(int i=0;i<s.length();i++)
      11 {
      12    sum=sum+ch[s[i]];
      13 }
      14    return sum;
      15 }
      16 int main()
      17 {
      18 ch['0']=0;ch['1']=1;ch['2']=2;
      19 ch['3']=3;ch['4']=4;ch['5']=5;
      20 ch['6']=6;ch['7']=7;ch['8']=8;ch['9']=9;
      21 string s;
      22 while(getline(cin,s))
      23 {
      24     if(s=="0") break;
      25 int sum=all(s);
      26 cout<<sum<<" ";
      27 int temp;
      28 stringstream ss1,ss2;
      29 ss1<<s;
      30 ss1>>temp;
      31 temp=temp*temp;
      32 ss2<<temp;
      33 ss2>>s;
      34 sum=all(s);
      35 cout<<sum<<endl;
      36 }
      37   return 0;
      38 }
    •  
     








    求最大值分数: 1

    时间限制:1 秒
    内存限制:32 兆
    特殊判题: 否
    提交:243
    解决: 69

    标签

    • 求最大值

    题目描述

    输入10个数,要求输出其中的最大值。

    输入格式

    测试数据有多组,每组10个数。

    输出

    对于每组输入,请输出其最大值(有回车)。

    样例输入

    10 22 23 152 65 79 85 96 32 1

    样例输出

    max=152

    提示[+]

    *** 提示已隐藏,点击上方 [+] 可显示 ***

    分类

    • 哈尔滨工业大学究生复试上机真题
    •  
    •  
    •  
    •  1 #include <iostream>
       2 #include <algorithm>
       3 using namespace std;
       4 int main()
       5 {
       6 int a[10];
       7 while(cin>>a[0])
       8 {
       9     
      10    for(int i=1;i<10;i++)
      11    cin>>a[i];
      12    int m=a[0];
      13    for(int i=1;i<10;i++)
      14    m=max(a[i],m);
      15    cout<<"max="<<m<<endl;
      16 }
      17   return 0;
      18 }
  • 相关阅读:
    SpringBoot-10-之初阶整合篇(下)
    09--SpringBoot之初阶整合篇(上)
    07--SpringBoot之数据库JPA(CRUD)
    go 文件操作 io
    类型断言
    多态
    golang interface
    go strcut 封装
    go struct 抽象
    poj-3280 Cheapest Palindrome (dp)
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4276304.html
Copyright © 2020-2023  润新知