夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上 面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400 千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一 下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费 应该是多少。
所交电费是一个简单的分段函数,直接 if else 判断即可, 但输出要注意保留一位小数
if (amount <= 150) {
result = amount * 0.4463;
} else if (amount <= 400) {
result = 150 * 0.4463 + (amount - 150) * 0.4663;
} else {
result = 150 * 0.4463 + (400 - 150) * 0.4663 + (amount - 400) * 0.5663;
}
对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成, 你需要将这些部分逆序。 给定一个原字符串A,请返回逆序后的字符串。例,输入”I am a boy!“输出”boy! a am I“
依次将单词读入并逆序即可
#include
#include
#include
#include
using namespace std;
int main()
{
vector<string> v;
string str;
while(cin >> str)
v.push_back(str);
reverse(v.begin(), v.end());
for (auto it : v)
cout << it << ' ';
puts("");
return 0;
}
小Q决定把一个整数n,分割为k个整数。 每个整数必须大于等于1。 小Q有多少方案。
本题要把一个整数划分成 k k k 个数,使得这 k k k 个数之和为 n n n 且为正整数
我们发现 n n n 和 k k k 很小,貌似可以直接爆搜,从 n n n 个数中枚举 k k k 个数,组合型枚举,但是每个数可以重复多次
当我第一次尝试时,发现超时了,回头加上剪枝后,就侥幸过掉了
#include
#include
#include
using namespace std;
const int N = 110, mod = 1e9+7;
int n, k;
int res;
void dfs(int u, int cnt, int sum)
{
if (u > n) return;
if (sum > n) return;
if (sum + (k-cnt) * u > n) return; // 可行性剪枝
if (cnt == k) {
if (sum == n) res = (res + 1) % mod;
return;
}
dfs(u, cnt+1, sum+u);
dfs(u+1, cnt, sum);
}
int main()
{
cin >> n >> k;
dfs(1, 0, 0);
printf("%d\n", res);
return 0;
}
定义美丽数列A: 1. 数列中相邻的数越是靠内相对大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1… 2. 距离边缘距离相等的 数的大小相等:a[0] = a[n-1],a[1] = a[n-2]… 通过修改最小的数字使得给定数列变成美丽数列。 修改后的值必须仍是正 整数。
这道题,不知道为什么最后是编译错误,我提交的时候是可以运行的,但只过了二十多的样例,不知道问题出在哪
总的来说,题目难度适中,不是很高,但比赛环境有待优化。比如切题的时候,这一题代码会被上一题的代码所覆盖;样例错误;编辑器体验不是很好,看着不是很舒服;点击调试运行的时候,看不见代码,不方便调试