划水。。。
13:人民币支付
总时间限制: 1000ms 内存限制:65536kB
- 描述
-
从键盘输入一指定金额(以元为单位,如345),然后输出支付该金额的各种面额的人民币数量,显示100元,50元,20元,10元,5元,1元各多少张,要求尽量使用大面额的钞票。
- 输入
- 一个小于1000的正整数。
- 输出
- 输出分行,每行显示一个整数,从上到下分别表示100元,50元,20元,10元,5元,1元人民币的张数
- 样例输入
-
735
- 样例输出
-
7 0 1 1 1 0
#include<cstdio> using namespace std; int main() { int n; scanf("%d", &n); printf("%d\n%d\n%d\n%d\n%d\n%d", n/100, n%100/50, n%50/20, n%50%20/10, n%10/5, n%5); return 0; }
没什么可说的。。。暴力出奇迹,骗分过样例,orz。
15:阶乘和
- 总时间限制: 1000ms 内存限制: 65536kB
- 描述
-
用高精度计算出S=1!+2!+3!+…+n!(n≤50)
其中“!”表示阶乘,例如:5!=5*4*3*2*1。
输入正整数N,输出计算结果S。
- 输入
- 一个正整数N。
- 输出
- 计算结果S。
- 样例输入
-
5
- 样例输出
-
153
#include<bits/stdc++.h> using namespace std; int a[10001]={1}, ans[100001]={0}; char n[1001];
int en[1001], ans_=1, la=1, x; int main() { int n; cin>>n; int x = 0; for(int i=1; i<=n; i++) { memset(a, 0, sizeof(a)); a[0] = 1; for(int k=1; k<=i; k++) { for(int j=0; j<la; j++) { a[j] = a[j]*k+x; x = a[j]/10; if(x>0 && j==la-1) la++; a[j] = a[j]%10; } } int l = 0; x = 0; while(l<=la || l<=ans_) { ans[l] = ans[l]+a[l]+x; x = ans[l]/10; if(x>0) ans_++; ans[l] = ans[l]%10; l++; } } int flag = 0; for(int i=ans_; i>=0; i--) { if(ans[i]==0 && flag==0) continue; else flag = 1; cout<<ans[i]; } return 0; }没看到题目中的高精度,但正常写的话。。。也有6分/手动滑稽/