2639 因数之和为n的最小正数
一个自然数的因数是指能被这个自然数整除的所有自然数。例如6的因数为:1,2,3,6。
现在给出一个数n,求因数之和为n的最小的正数是多少(如果找不到这样的数,输出-1)。
输入一个数 n(1 <= n <= 10000)
输出
一个数 a
输入样例
6
输出样例
5
#include <iostream> using namespace std; int n; bool isit(int x) { int ans = 0; for (int i = 1; i <= x; ++i) { if (x % i == 0) ans += i; } if (ans == n) { return true; } else { return false; } } int main() { cin >> n; for (int i = 1; i <= n; ++i) { if (isit(i)) { cout << i << endl; return 0; } } cout << -1 << endl; return 0; }
1088 最长回文子串
输入一个字符串Str,输出Str里最长回文子串的长度。
回文串:指aba、abba、cccbccc、aaaa这种左右对称的字符串。
串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符)串
例如 abc 这个串的子串:空串、a、b、c、ab、bc、abc
输入
输入Str(Str的长度 <= 1000)
输出
输出最长回文子串的长度L。
输入样例
daabaac
输出样例
5
#include <iostream> #include <cstring> #include <algorithm> using namespace std; char str[1010]; bool isit(int l, int r) { for (int i = 0; i < (r-l+1)/2; ++i) { if (str[l+i] != str[r-i]) { return false; } } return true; } int main() { cin >> str; int ans = 0; int len = strlen(str); for (int i = 0; i < len; ++i) { for (int j = i; j < len; ++j) { if (isit(i, j)) { ans = max(ans, j-i+1); } } } cout << ans << endl; return 0; }