SDUT-3769 分隔
Problem Description
给出一个正整数,将这个正整数分割成 2 个数,怎样分割才能使分成的两个数的和最大呢?请你求出最大的和。
Input
输入数据有多组(数据组数不超过 100),到 EOF 结束。
对于每组数据,输入一行,包含 1 个整数 n (10 <= n <= 10^1000)。
Output
对于每组数据,输出一行,包含 1 个整数,表示分割成的两个数的最大和。
最早用C++写了半天判断...干脆用python试了一下暴力,C++同样暴力应该更快一些,不过可能没有python这样优雅了...
max([int(a[0:i]) + int(a[i:]) for i in range(1,len(a))])
将一个数从第一位开始挨个分割加了一遍取出最大值...
while True:
try:
a = input()
print(max([int(a[0:i],10) + int(a[i:],10) for i in range(1,len(a))]))
except EOFError:
break
SDUT-1123 阶乘
Problem Description
从键盘输入任意一个大于等于0的整数n,然后计算n的阶乘,并把它输出。
提示: 0!是 1 。
Input
输入任意一个大于等于0的整数n。
Output
输出n!
Console.WriteLine(Enumerable.Range(1, int.Parse(Console.ReadLine())).Aggregate(1, (sum, next) => (sum * next)));
using System;
using System.Collections.Generic;
using System.Linq;
namespace QwQ {
class StdIO {
static void Main(string[] args) {
Console.WriteLine(Enumerable.Range(1, int.Parse(Console.ReadLine())).Aggregate(1, (sum, next) => (sum * next)));
}
}
}
int n = int.Parse(Console.ReadLine());
IEnumerable<int> list = Enumerable.Range(1, n);
int ans = list.Aggregate(1, (sum, next) => (sum *= next));
Console.WriteLine(ans);
SDUT-1235 计算球体积
Problem Description
Input
Output
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace QwQ {
class Program {
static void Main(string[] args) {
while(true) {
Console.WriteLine("{0:F3}", V(double.Parse(Console.ReadLine())));
}
Console.ReadKey();
}
public static double V(double r) {
return 4.0 / 3.0 * PI * r * r * r;
}
public const double PI = 3.1415927; //定义常量
}
}
SDUT - 4127 喵帕斯之短笛
Problem Description
莲酱非常喜欢他的短笛,这次莲酱听到了一段很好听的音乐,但是莲酱想知道他的数字简谱怎么写,所以这个任务就交给你来完成了,输入一行字符串,只包含 "do re mi fa so la xi"。(do re mi fa so la xi 分别对应数字 1 2 3 4 5 6 7)
现在给出一个乐谱,请把他转化成莲酱需要的简谱。
Input
多组输入直到EOF。(组数小于100)
每组数据首先输入一个 N 代表接下来输入 N 个音符,接下来输入 N 个音符(只出现 do re mi fa so la xi)并且每个每个音符以空格隔开。(1 <= N <= 100)
Output
每组数据输出一行,为转化后乐谱,只出现 1 2 3 4 5 6 7 并以空格隔开。
python版 -- 将list转为string后replace替换
while True:
try:
input()
print(str(input().split()).replace('do','1').replace('re','2').replace('mi','3').replace('fa','4').replace('so','5').replace('la','6').replace('xi','7').replace(',','').rstrip(']').lstrip('[').replace("'",""))
except EOFError:
break
C#版: --使用字典容器映射要转换的字符,将输入的string按空格分割后转换为字典映射后的string存入List容器,再使用String.Join方法将List转换为按空格分隔的string并输出(QwQ解释起来才发现好拗口噗...
Console.WriteLine(String.Join(" ", new List<string>(Console.ReadLine().Split()).ConvertAll(i => dic[i])));
using System;
using System.Collections.Generic;
using System.Linq;
namespace QwQ {
class StdIO {
static void Main(string[] args) {
Dictionary<string, string> dic = new Dictionary<string, string>(){
{ "do","1"},{ "re","2"},{ "mi","3"},{ "fa","4"},{ "so","5"},{ "la","6"},{ "xi","7"}
};
while(true) {
Console.ReadLine();
Console.WriteLine(String.Join(" ", new List<string>(Console.ReadLine().Split()).ConvertAll(i => dic[i])));
}
}
}
}
SDUT-4134 皮卡丘的叫声是?
Problem Description
皮卡丘的叫声大家听过吗?当然是“pika”,“pikapi”,“pikachu”,“pikapika”等等,其中“pikapi”指的是小智哦(不要问我为什么懂皮卡丘语),现在皮卡丘说了好长一段话,请你找出皮卡丘叫了多少次“pikachu”。
Input
输入数据有多组,到EOF结束。
每组数据输入一段皮卡丘的叫声,叫声用字符串来表示,字符串中含逗号,不含空格,长度不超过1000。
Output
对于每组输入,输出一个整数n,表示叫声中“pikachu”的数量。
字符串统计固定字串数量,python和C#都比较方便
python :
print(input().count("pikachu"))
C# 需要包含命名空间System.Text.RegularExpressions(正则表达式)
Console.WriteLine(Regex.Matches(Console.ReadLine(), "pikachu").Count);
while True:
try:
print(input().count("pikachu"))
except EOFError:
break
using System;
using System.Text.RegularExpressions;
namespace QwQ {
class StdIO {
static void Main(string[] args) {
while(true) {
Console.WriteLine(Regex.Matches(Console.ReadLine(), "pikachu").Count);
}
}
}
}
C++ STL 同样在查找固定字串时也比较方便:
#include <bits/stdc++.h>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
string s;
while(cin >> s){
int pos = -1,cnt = 0;
while((pos = s.find("pikachu",pos+1))!=string::npos){
cnt ++;
}
cout<<cnt<<endl;
}
return 0;
}
SDUT-1177 时间间隔
Problem Description
如:3点5分25秒应表示为--03:05:25.假设两个时间在同一天内,时间先后顺序与输入无关。
Input
第一行为时间点1。
第二行为时间点2。
Output
格式参看输入输出。
还记得刚开学的时候C语言将单位都化成秒计算再化回时间单位...不过C#有DateTime 可以直接计算
Console.WriteLine((Convert.ToDateTime(Console.ReadLine())- Convert.ToDateTime(Console.ReadLine())).ToString().Trim('-'));
将2行输入分别convert转为DateTime型,再将相减得到的TimeSpan型数据转为string,使用Trim方法去掉string开头的 -(防止出现负号)
using System;
using System.Collections.Generic;
using System.Linq;
namespace QwQ {
class Program {
static void Main(string[] args) {
Console.WriteLine((Convert.ToDateTime(Console.ReadLine())- Convert.ToDateTime(Console.ReadLine())).ToString().Trim('-'));
}
}
}
SDUT-1160 C语言实验-某年某月的天数
Problem Description
Input
Output
这道题C#可以使用DateTime的DaysInMonth方法(emmm...)
DateTime.DaysInMonth(Year,Month)
using System;
using System.Collections.Generic;
namespace QwQ {
class Program {
static void Main(string[] args) {
List<int> a = new List<string>(Console.ReadLine().Split('\\')).ConvertAll(i => int.Parse(i));
Console.WriteLine(DateTime.DaysInMonth(a[0], a[1]));
}
}
}