103
#include <bits/stdc++.h>
using namespace std;
/* int compare_longlong(const void *a, const void *b) {
// 将void*转换为long long*,取值后做差实现升序
long long num1 = *(const long long *)a;
long long num2 = *(const long long *)b;
if (num1 < num2) return -1;
if (num1 > num2) return 1;
return 0;
} */
void BubbleSort(long long arr[],int len){
for(int i=0;i<len;i++){
for(int j=0;j<len-i-1;j++){
if(arr[j]>arr[j+1]){
long long temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
int main(){
int num;
scanf("%d",&num);
getchar();
while(num--){
char arr[2000];
gets(arr);
int len=strlen(arr);
long long arrnum[1000];
long long currNum=0;
int total=0;//记录当前数字的数量
int i=0;
int temp;
while(i<len){
temp=arr[i]-'0';
if(temp==5){
if(arr[i-1]-'0'==5){
i++;
continue;
}
}
if(temp!=5){
currNum= currNum*10+temp;
}
else{
arrnum[total++]=currNum;
currNum=0;
}
i++;
}
if(temp!=5){
arrnum[total++]=currNum;
currNum=0;
}
//qsort(arrnum, total, sizeof(long long), compare_longlong);
BubbleSort(arrnum,total);
for(int j=0;j<total;j++){
printf("%lld",arrnum[j]);
if(j!=total-1){
printf(" ");
}
}
printf("\n");
}
}
104
#include <stdio.h>
#include <string.h>
// 规范化一个数字字符串,返回处理后的字符串
void normalize(char *s) {
int len = strlen(s);
int i, j;
int has_dot = 0;
int start = 0;
int end = len - 1;
// 1. 找到小数点位置
for (i = 0; i < len; i++) {
if (s[i] == '.') {
has_dot = 1;
break;
}
}
int dot_pos = has_dot ? i : len;
// 2. 去掉整数部分的前导0
// 找到第一个非0的位置,或者小数点前的最后一个0
i = 0;
while (i < dot_pos && s[i] == '0') {
i++;
}
if (i == dot_pos) { // 整数部分全是0
start = i - 1; // 保留一个0
} else {
start = i;
}
// 3. 去掉小数部分的末尾0
if (has_dot) {
j = len - 1;
while (j > dot_pos && s[j] == '0') {
j--;
}
if (j == dot_pos) { // 小数部分全是0,去掉小数点
end = j - 1;
} else {
end = j;
}
} else {
end = dot_pos - 1;
}
// 4. 把规范化后的字符串移到开头
for (i = start, j = 0; i <= end; i++, j++) {
s[j] = s[i];
}
s[j] = '\0';
}
int main() {
int N;
scanf("%d", &N);
while (N--) {
char A[2005], B[2005];
scanf("%s %s", A, B);
normalize(A);
normalize(B);
if (strcmp(A, B) == 0) {
printf("YES\n");
} else {
printf("NO\n");
}
}
return 0;
}
105
#include <stdio.h> // 标准输入输出库(getchar/putchar/printf)
#include <string.h> // 字符串处理库(本代码未直接使用,但为通用包含)
#include <ctype.h> // 字符类型判断库(isalpha/tolower)
#define MAX_LEN 20001 // 定义最大输入长度(题目要求输入不超过20000字符,留1位存结束符)
/**
* @brief 中心扩展核心函数:以l和r为初始中心向两侧扩展,寻找最长回文子串
* @param s 原始输入字符串
* @param n 原始字符串的总长度
* @param l 扩展的左起始位置
* @param r 扩展的右起始位置(奇数回文l=r,偶数回文r=l+1)
* @param max_alpha_len 指向"当前最长字母长度"的指针(传地址实现值修改)
* @param start 指向"最长回文起始位置"的指针
* @param end 指向"最长回文结束位置"的指针
* @note 扩展时跳过非字母字符,仅比较字母(忽略大小写),长度仅统计字母
*/
void expand(char *s, int n, int l, int r, int *max_alpha_len, int *start, int *end) {
int curr_alpha_len = 0; // 记录本次扩展得到的回文串中字母的长度(仅统计字母)
int temp_start = l; // 临时存储本次扩展的回文起始位置(保留原始字符范围)
int temp_end = r; // 临时存储本次扩展的回文结束位置
// 循环扩展:左不越界(l>=0)、右不越界(r<n)时继续
while (l >= 0 && r < n) {
// 跳过左侧所有非字母字符(只处理字母,标点/空格/换行等直接跳过)
while (l >= 0 && !isalpha(s[l])) l--;
// 跳过右侧所有非字母字符
while (r < n && !isalpha(s[r])) r++;
// 边界检查:跳过非字母后可能越界,需终止扩展
if (l < 0 || r >= n) break;
// 核心判断:字母忽略大小写是否相等(回文的核心条件)
if (tolower(s[l]) == tolower(s[r])) {
// 统计字母长度:仅字母参与计数,非字母不计入
if (l == r) {
// 奇数长度回文:中心单个字母,长度+1
curr_alpha_len += 1;
} else {
// 偶数长度回文:左右各一个字母,长度+2
curr_alpha_len += 2;
}
// 更新本次扩展的回文实际起止位置(包含原始非字母字符)
temp_start = l;
temp_end = r;
// 继续向两侧扩展,寻找更长的回文
l--;
r++;
} else {
// 字母不相等,回文中断,终止扩展
break;
}
}
// 若本次扩展的字母长度超过当前最大值,则更新全局最大值和位置
if (curr_alpha_len > *max_alpha_len) {
*max_alpha_len = curr_alpha_len; // 更新最长字母长度
*start = temp_start; // 更新最长回文起始位置
*end = temp_end; // 更新最长回文结束位置
}
}
int main() {
char s[MAX_LEN]; // 存储原始输入的字符数组(包含所有字符:字母/标点/空格/换行)
int n = 0; // 记录实际输入的字符总数
int c; // 临时存储单个输入字符
// 读取全部输入:直到EOF(文件结束/控制台按Ctrl+D)或达到最大长度
// 注:getchar会读取所有字符(包括空格、换行、标点),符合题目"保留原始字符"要求
/* while ((c = getchar()) != EOF && n < MAX_LEN - 1) {
s[n++] = (char)c; // 逐个存储字符,n自增记录长度
}
s[n] = '\0'; // 字符串结束符,标记输入结束 */
gets(s);
getchar();
n=strlen(s);
s[n] = '\0';
int max_alpha_len = 0; // 存储最长回文串的字母长度(核心统计目标)
int start = 0, end = 0; // 存储最长回文串的起始/结束位置(用于输出原始字符)
// 中心扩展法核心:遍历每个字符作为可能的回文中心
for (int i = 0; i < n; i++) {
// 1. 处理奇数长度回文:中心为单个字符i(l=r=i)
expand(s, n, i, i, &max_alpha_len, &start, &end);
// 2. 处理偶数长度回文:中心为字符i和i+1之间(l=i, r=i+1)
expand(s, n, i, i + 1, &max_alpha_len, &start, &end);
}
// 输出结果:严格按题目要求
printf("%d\n", max_alpha_len); // 第一行:仅输出回文串中的字母数量
// 第二行及以后:输出包含所有原始字符的最长回文子串(标点/空格/换行都保留)
for (int i = start; i <= end; i++) {
putchar(s[i]); // 逐个输出字符,保留原始格式
}
putchar('\n'); // 最后换行,保证输出格式规范
return 0;
}
计算机科学也与几乎所有使用计算机的学科有着间接的关系。在其他领域开发的应用程序通常涉及与计算机科学家的合作,他们贡献了他们在算法、数据结构、软件工程和现有技术方面的知识。作为回报,计算机科学家有机会观察计算机的新应用,从中他们可以更深入地了解计算机的使用。这些关系使计算机科学成为一个高度跨学科的研究领域。
曾经,有可能定义三种不同类别的计算机。主机被安置在壁橱大小的大型金属框架中。微型计算机体积更小、价格更低、功能更弱,但它们可以支持多个用户并运行商业软件。微型计算机与其他类别的计算机明显不同,因为它们专用于单个用户,它们的CPU由单个微处理器芯片组成。
如今,微处理器不再是计算机类别之间的区别,因为几乎每台计算机都使用一个或多个微处理器作为其CPU。"小型计算机"一词已经不再使用,"微型计算机"和"大型机"这两个词的使用频率越来越低。
