poj3175 枚举

2019-11-29  本文已影响0人  暖昼氤氲
 /*
Time:2019.11.29
Author: Goven
type:枚举 
err:Time Limit Exceeded(开根号循环的数字是double)
ref:
*/ 
#include<iostream>
#include<cmath> 
#include<string> 
using namespace std;

int main()
{
    int l, j, i = 2;
    double a;
    string s;
    cin >> l >> s;
    while (1) {
        a = sqrt((double)i);
        a = a - (int)a;
        for (j = 0; j < l; j++) {
            int b = (int)(a * 10);
            a = a * 10; 
            b = b % 10;
            if ((s[j] - '0') != b) break;
        }
        if (j == l) break;
        i++;
        
    }
    cout << i << endl;
    return 0;
}

/*正确版 
ref:https://blog.csdn.net/qq_31785871/article/details/52972893
https://blog.csdn.net/aozil_yang/article/details/52057775
*/
#include<iostream>
#include<cmath> 
#include<string> 

using namespace std;
typedef long long ll;

int main()
{
    int n, l;
    cin >> l >> n;
    double base = pow(0.1, l), t = base * n;
    int i = 1;
    while (1) {
        double a = (ll)((i + t) * (i + t) + 1), b = (i + t + base) * (i + t + base);
        if (a + 1e-11 < b) {//err1:不加 1e-11 就是错的 
            printf("%lld\n", (ll)a);
            break;
        }
        i++;
    }
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读