原题链接:https://ac.nowcoder.com/acm/contest/318/A
Code(C++):
#include
#include
using namespace std;
int vis[55][30],ans[55];
int x,n,m;
char y;
string z;
int main(){
int t; cin>>t;
for(int i=1;i<=t;i++){
memset(vis,0,sizeof(vis));
memset(ans,0,sizeof(ans));
cin>>n>>m;
while(m--){
cin>>x>>y>>z;
if(z=="AC" && !vis[x][y-'A'+1]){
ans[x]++;
vis[x][y-'A'+1]=1;
}
}
cout<<"Case #"<<i<<':'<<endl;
for(int j=1;j<=n;j++)
cout<<ans[j]<<' ';
cout<<endl;
}
}
原题链接:https://ac.nowcoder.com/acm/contest/318/B
Code(C++):
#include
using namespace std;
int a[1010];
int main(){
int t; cin>>t;
while(t--){
int n; cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
int ans=0;
for(int i=1;i<=n;i++){
int maxn=a[i];
for(int j=i+1;j<=n;j++){
if(a[j]<a[i]) break;
if(a[j]>maxn){
maxn=a[j];
ans=max(ans,j-i);
}
}
}
cout<<ans<<endl;
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/318/D
Code(Java):
import java.util.*;
import java.math.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
BigDecimal a = in.nextBigDecimal();
BigDecimal b = in.nextBigDecimal();
int n = in.nextInt();
String str = in.next();
if(str.compareTo("Xiang")==0)
System.out.println(a.divide(b,n,BigDecimal.ROUND_FLOOR));
else
System.out.println(a.divide(b,n,BigDecimal.ROUND_HALF_UP));
}
}
}
原题链接:https://ac.nowcoder.com/acm/contest/318/G
Code(C++):
#include
#include
using namespace std;
typedef long long ll;
ll f(ll x){ //计算输入的数各个位的数之和
int tmp = 0;
while(x){
tmp += x % 10;
x /= 10;
}
return tmp;
}
ll num(ll x){ //计算输入的数的位数
ll sum=0;
while(x){
sum++;
x/=10;
}
return sum;
}
int main(){
ll c;
while(cin>>c){
if(c<=10) cout<<c<<endl;
else{
ll a=pow(10,num(c)-1)-1;
ll b=c-a;
cout<<f(a)+f(b)<<endl;
}
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/318/J
Code(C++):
#include
#include
#define ll long long
using namespace std;
ll l[1010],v[1010],dp[1010];
int main(){
ll n,s,t; cin>>n>>s>>t;
ll m=t-s,a,b;
for(int i=1;i<=n;i++){
cin>>a>>b>>v[i];
l[i]=b-a;
}
for(int i=1;i<=n;i++)
for(int j=m;j>=l[i];j--)
dp[j]=max(dp[j],dp[j-l[i]]+v[i]);
cout<<dp[m]<<endl;
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/318/K
Code(C++):
#include
#include
#include
using namespace std;
const int N=2010;
typedef long long ll;
ll a[N],b[N];
int main(){
int t; cin>>t;
for(int k=1;k<=t;k++){
memset(a,0,sizeof(a));
int n,q; cin>>n>>q;
for(int i=1;i<=n;i++)
cin>>a[i];
cout<<"Case #"<<k<<":"<<endl;
while(q--){
memset(b,0,sizeof(b));
int x; cin>>x;
int cnt=0;
for(int i=1;i<=n;i++){
if(i==x) continue;
b[++cnt]=a[i];
}
sort(b+1,b+1+cnt);
ll ans=-1;
for(int i=cnt;i>=3;i--){
if(b[i-2]+b[i-1]>b[i]){
ans=max(ans,b[i]+b[i-1]+b[i-2]);
break;
}
}
cout<<ans<<endl;
}
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/318/L
Code(C++):
#include
#define ll long long
using namespace std;
bool check(ll x){
int vis1=1,vis2=1;
if(x%6==0) vis1=0;
while(x){
if(x%10==6) vis2=0;
x/=10;
}
if(vis1 && vis2) return false;
return true;
}
int main(){
int t; cin>>t;
while(t--){
ll n; cin>>n;
ll ans=0;
for(ll i=1;i<=n;i++){
if(!check(i))
ans+=i*i;
}
cout<<ans<<endl;
}
return 0;
}
原题链接:https://ac.nowcoder.com/acm/contest/318/M
Code(C++):
#include
using namespace std;
int main(){
int t; cin>>t;
while(t--){
int n; cin>>n;
if(n==0) cout<<1<<endl;
else cout<<n*(n-1)+2<<endl;
}
return 0;
}