码迷,mamicode.com
首页 > 其他好文 > 详细

数学问题

时间:2015-02-06 08:16:06      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

 

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 }

     

数学问题

标签:

原文地址:http://www.cnblogs.com/xiaoyesoso/p/4276304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!