简单数学问题

记录点滴。

  1 /*
  2 2015.6    HT
  3 ACM Work_2
  4 
  5 */
  6 
  7 //#include <stdio.h>
  8 #include<iostream>
  9 using namespace std;
 10 
 11 /*
 12 Sum Problem
 13 1+2+...+N
 14 */
 15 //int main()
 16 //{
 17 //    int n, sum = 0;
 18 //    while((scanf("%d", &n) && (n>0)))
 19 //    {
 20 //        sum = (1 + n) * n / 2;
 21 //        if (sum > 2147483648)
 22 //        {
 23 //            printf("sum too large !");
 24 //            break;
 25 //        }
 26 //        printf("%d

", sum);
 27 //        sum = 0;
 28 //    }
 29 //    return 0;
 30 //}
 31 
 32 
 33 /*
 34 Elevator
 35 6 seconds to move the elevator up one floor 
 36 4 seconds to move down one floor 
 37 stay for 5 seconds at each stop
 38 */
 39 //int main()
 40 //{
 41 //    int i, n, a[100], sum = 0;
 42 //    for (i = 1; i < 100; i++)
 43 //        a[i] = 0;
 44 //    while((scanf("%d", &n) && n != 0 && n < 100))
 45 //    {
 46 //        a[0] = 0;
 47 //        for (i = 1; i <= n; i++)
 48 //            scanf("%d", &a[i]);
 49 //        for (i = 1; i <= n; i++)
 50 //        {  
 51 //            if(a[i]>a[i-1])
 52 //                sum += (a[i] - a[i-1]) * 6 + 5;
 53 //            else
 54 //                sum += (a[i-1] - a[i]) * 4 + 5;
 55 //        }
 56 //        printf("%d
", sum);
 57 //        sum = 0;
 58 //    }
 59 //    return 0;
 60 //}
 61 
 62 
 63 /*
 64 Least Common Multiple 最小公倍数
 65 */
 66 //int main()
 67 //{//LCM
 68 //    int i, n, num, count = 1;
 69 //    int  ch, p1, r, q1, p, q;
 70 //    scanf("%d", &n);
 71 //    while (n--)
 72 //    {
 73 //        i = q = p = r = 0;
 74 //        count = 1;
 75 //        scanf("%d", &num);
 76 //        while (num--)
 77 //        {
 78 //            scanf("%d", &ch);
 79 //            if (count++ == 1)
 80 //            {
 81 //                p = p1 = ch;
 82 //                continue;
 83 //            }
 84 //            else 
 85 //                q = q1 = ch;
 86 //            // need p > q
 87 //            if (q > p)
 88 //            {
 89 //                r = q; 
 90 //                q = p; 
 91 //                p = r;
 92 //            }
 93 //            while (p%q != 0)
 94 //            {
 95 //                r = q;
 96 //                q = p%q;
 97 //                p = r;
 98 //
 99 //            }
100 //            p = p1 = p1 / q*q1;
101 //        }
102 //        printf("%d
", p);
103 //    }
104 //    return 0;
105 //}
106 
107 
108 /*
109 Number Sequence
110 f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7
111 */
112 //int main()
113 //{
114 //    // 结果最多只有7 * 7 = 49种可能
115 //    int a, b, n, t1, t2, t3;
116 //    while (1)
117 //    {
118 //        cin >> a >> b >> n;
119 //        if (!(a || b || n)) break;
120 //        n %= 49;
121 //        t1 = t2 = t3 = 1;
122 //        for (int i = 3; i <= n; ++i)
123 //        {
124 //            t3 = (a*t2 + b*t1) % 7;
125 //            t1 = t2;
126 //            t2 = t3;
127 //        }
128 //        cout << t3 << endl;
129 //    }
130 //    return 0;
131 //}
132 
133 
134 /*
135 Fibonacci Again
136 F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2)
137 "yes" if 3 divide evenly into F(n)
138 "no" if not
139 */
140 //int main()
141 //{
142 //    int n, i;
143 //    __int64 ans, a, b;
144 //    while (cin >> n)
145 //    {
146 //        a = 7;
147 //        b = 11;
148 //        if (n == 1 || n == 0)
149 //            cout << "no
";
150 //        else
151 //        {
152 //            ans = 0;
153 //            for (i = 2; i <= n; i++)
154 //            {
155 //                ans = (a + b) % 3;
156 //                a = b;
157 //                b = ans;
158 //            }
159 //            if (!ans) 
160 //                cout << "yes
";
161 //            else 
162 //                cout << "no
";
163 //        }
164 //    }
165 //    return 0;
166 //}
167 
168 
169 /*
170 吃糖果
171 不喜欢将一样的糖果放在一起吃
172 是否存在一种吃糖果的顺序使得他能把所有糖果都吃完
173 2
174 3
175 4 1 1
176 5
177 5 4 3 2 1
178 
179 No
180 Yes
181 */
182 //int main()
183 //{
184 //    // 某种糖果的最大数量max, 剩余的糖果总数要比max-1多或等于
185 //    int sum, max;
186 //    int i, T, n, m;
187 //
188 //    scanf("%d", &T);
189 //    while (T--)
190 //    {
191 //        scanf("%d", &n);
192 //        sum = 0;
193 //        max = -1;
194 //        for (i = 0; i<n; i++)
195 //        {
196 //            scanf("%d", &m);
197 //            sum += m;
198 //            if (max<m)
199 //                max = m;
200 //        }
201 //        if (sum - max + 1 >= max) 
202 //            printf("Yes
");
203 //        else 
204 //            printf("No
");
205 //    }
206 //    return 0;
207 //}
208 
209 
210 /*
211 人见人爱A^B
212 求A^B的最后三位数表示的整数
213 */
214 //int power(int a, int n)
215 //{
216 //    // 快速幂非递归实现
217 //    int ans = 1;
218 //    while (n)
219 //    {
220 //        if (n & 1)
221 //            ans *= a;  
222 //        a *= a;
223 //        n = n >> 1;        
224 //    }
225 //    return ans;
226 //}
227 //int main()
228 //{
229 //    // 较大数会溢出
230 //    int a, b;
231 //    while (scanf("%d%d", &a, &b) != EOF && a && b)
232 //    {
233 //        printf("%d
", power(a, b) % 1000);
234 //    }
235 //    return 0;
236 //}
237 
238 
239 /*
240 Rightmost Digit
241 output the most right digit of N^N
242 3 * 3 * 3 = 27, so the rightmost digit is 7
243 */
244 //int power(int a, int n)
245 //{
246 //    // 快速幂非递归实现
247 //    int ans = 1;
248 //    while (n)
249 //    {
250 //        if (n & 1)
251 //            ans *= a;  
252 //        a *= a;
253 //        n = n >> 1;        
254 //    }
255 //    return ans;
256 //}
257 //int main()
258 //{
259 //    int a, n;
260 //    scanf("%d", &n);
261 //    while (n--)
262 //    {
263 //        scanf("%d", &a);
264 //        printf("%d
", power(a, a) % 10);
265 //    }
266 //    return 0;
267 //}
268 
269 
270 /*
271 最小公倍数
272 */
273 //int gcd(int a, int b) 
274 //{
275 //    //求最大公约数函数
276 //    int r;
277 //    while (b)
278 //    {
279 //        r = a%b;
280 //        a = b;
281 //        b = r;
282 //    }
283 //    return a;
284 //}
285 //int main()
286 //{
287 //    int a, b, g;
288 //    while (scanf("%d%d", &a, &b) != EOF)
289 //    {
290 //        if (a > b)
291 //            g = gcd(a, b);
292 //        else
293 //            g = gcd(b, a);
294 //        g = (a*b) / g;
295 //        printf("%d
", g);
296 //    }
297 //    return 0;
298 //}
299 
300 
301 /*
302 求数列的和
303 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和
304 */
305 //int main()
306 //{
307 //    int n, m, i;
308 //    double sum, a;
309 //    while (scanf("%d%d", &n, &m) != EOF)
310 //    {
311 //        sum = 0;
312 //        a = (double)n;
313 //        for (i = 0; i<m; i++)
314 //        {
315 //            sum += a;
316 //            a = sqrt(a);
317 //        }
318 //        printf("%.2lf
", sum);
319 //    }
320 //    return 0;
321 //}
322 
323 
324 /*
325 多项式求和
326 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
327 */
328 int main()
329 {
330     int n, m, i;
331     double a[1000], j;
332     a[1] = 1;
333     for (i = 2; i<1000; i++)
334     {
335         j = 1.0 / i;
336         if (i % 2 == 0)
337             a[i] = a[i - 1] - j;
338         else
339             a[i] = a[i - 1] + j;
340     }
341     scanf("%d", &n);
342     while (n--)
343     {
344         scanf("%d", &m);
345         printf("%.2f
", a[m]);
346     }
347     return 0;
348 }
原文地址:https://www.cnblogs.com/ht-beyond/p/4549887.html