不变初心数pta的题
时间: 2024-10-07 09:03:03 浏览: 10
不变初心数是一类 PTA 上的题目,其主要考察的是字符串的处理和算法设计能力。这类题目通常给出一个字符串,要求你统计其中有多少个字符不变位置,即该字符在字符串中的位置和在字符串反转后的位置相同。例如,对于字符串 "level",其中有两个字符 'l' 和 'e' 不变位置。
下面是一道不变初心数的例题:
【题目描述】
给定一个长度不超过 $10^5$ 的字符串 $S$,求其中有多少个字符不变位置。
【输入格式】
输入一行字符串 $S$。
【输出格式】
输出一个整数,表示字符不变位置的个数。
【样例输入】
level
【样例输出】
2
【解题思路】
对于这类题目,我们可以使用双指针来解决。具体来说,我们可以使用两个指针 $i$ 和 $j$ 分别从字符串的左右两端开始向中间移动,如果 $S_i=S_j$,则说明该字符不变位置,计数器加一,并将指针向中间移动;否则,将指针向中间移动一位,继续比较下一个字符。
【参考代码】
```python
s = input().strip()
n = len(s)
cnt = 0
i, j = 0, n-1
while i < j:
if s[i] == s[j]:
cnt += 1
i += 1
j -= 1
elif s[i] < s[j]:
i += 1
else:
j -= 1
print(cnt)
```
相关问题
用c解决 不变初心数
"不变初心数"这个表述似乎不太明确,如果是指编程中的某个特定概念,可能是理解有误。在C语言中,通常我们会提到常量(Constant),它们是在程序运行过程中不会改变的值。例如,整型常量、浮点型常量或者是字符常量等。
如果你想表达的是计算某种特定数值的不变特性,比如斐波那契数列或者素数判断,这里提供一个简单的例子:计算斐波那契数列的第n项,其特点是前两项相加得到后续项,是一个常见的不变性质问题。
```c
#include <stdio.h>
// 计算斐波那契数列的函数
unsigned long long fibonacci(int n) {
if (n <= 0)
return 0;
else if (n == 1 || n == 2)
return 1;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
unsigned long long result = fibonacci(n);
printf("斐波那契数列的第%d项是:%llu\n", n, result);
return 0;
}
```
在这个例子中,`fibonacci`函数的返回值对于固定的输入n是不变的,因为每次调用都是基于之前的结果计算的。
不变初心数是指这样一种特别的数,它分别乘 2、3、4、5、6、7、8、9 时,所得乘积各位数之和却不变。例如 18 就是这样的数:18 的 2 倍是 36,3+6=9;18 的 3 倍是 54,5+4=9;…… 18 的 9 倍是 162,1+6+2=9。对于 18 而言,9 就是它的初心。本题要求你判断任一个给定的数是否有不变的初心
不变初心数是指一个数,它乘以2、3、4、5、6、7、8、9的结果的各位数之和都相等。例如,18是一个不变初心数,因为18乘以2得36,3+6=9;18乘以3得54,5+4=9;以此类推,18乘以9得162,1+6+2=9。对于18而言,9就是它的初心。本题要求判断任意一个给定的数是否是不变初心数。