---恢复内容开始---
1001判断大数是2,3,5的整数倍(水题)
1 /* 2 */ 3 #include<stdio.h> 4 #include<math.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<ctype.h> 8 #include <map> 9 #include <set> 10 #include <cmath> 11 #include <deque> 12 #include <queue> 13 #include <stack> 14 #include <cstdio> 15 #include <cctype> 16 #include <string> 17 #include <vector> 18 #include <cstdlib> 19 #include <cstring> 20 #include <iostream> 21 #include <algorithm> 22 #define LL long long 23 #define INF 0x7fffffff 24 using namespace std; 25 #define N 405 26 27 int main() 28 { 29 int n=35; 30 char a[n]; 31 while(scanf("%s",a)!=EOF) 32 { 33 int flag=0; 34 int t=strlen(a); 35 //cout<<t<<endl; 36 switch(a[t-1]){ 37 //cout<<a[t-1]<<endl; 38 case ‘0‘: 39 case ‘2‘: 40 case ‘4‘: 41 case ‘5‘: 42 case ‘6‘: 43 case ‘8‘: 44 { 45 flag=1; 46 break; 47 } 48 default:break; 49 } 50 //cout<<flag<<endl; 51 if(flag==0){ 52 int res=0; 53 for(int i=0;i<t;i++) 54 { 55 res+=a[i]-‘0‘; 56 } 57 if(res%3==0){ 58 flag=1; 59 } 60 } 61 if(flag==0){ 62 cout<<"NO"<<endl; 63 } 64 else 65 cout<<"YES"<<endl; 66 } 67 return 0; 68 }
1002求最大连续子序列
表示依然没有形成DP的思想,这么简单的还是想错了。
当前面对当前位置的累积和pos>0时,对于后面的数都是有增加的意义的;
若pos<0则 从0开始计数,pos再进行累加。
每次pos操作之后,都要对最大值max进行比较更新。
1 /* 2 */ 3 #include<stdio.h> 4 #include<math.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<ctype.h> 8 #include <map> 9 #include <set> 10 #include <cmath> 11 #include <deque> 12 #include <queue> 13 #include <stack> 14 #include <cstdio> 15 #include <cctype> 16 #include <string> 17 #include <vector> 18 #include <cstdlib> 19 #include <cstring> 20 #include <iostream> 21 #include <algorithm> 22 #define LL long long 23 #define INF 0x7fffffff 24 using namespace std; 25 #define N 405 26 27 int main() 28 { 29 int n; 30 int a[100005],b[100005]; 31 while(cin>>n) 32 { 33 long long res=0; 34 for(int i=0;i<n;i++){ 35 scanf("%d",&a[i]); 36 res+=a[i]; 37 b[i]=(1890*a[i]+143)%10007; 38 // cout<<b[i]<<"qqqqqqqq"; 39 b[i]=b[i]-a[i]; 40 } 41 42 // for(int i=0;i<n;i++){ 43 // cout<<a[i]<<" "<<b[i]<<endl; 44 // } 45 int j=0; 46 long long dis=0,pos=0; 47 while(j<n) 48 { 49 // cout<<pos<<endl; 50 // 51 pos+=b[j]; 52 dis=max(dis,pos); 53 if(pos<0) 54 { 55 pos=0; 56 } 57 j++; 58 } 59 // cout<<res<<"sss"<<dis<<endl; 60 res+=dis; 61 cout<<res<<endl; 62 } 63 return 0; 64 }
待补
原文:http://www.cnblogs.com/sunshiniing/p/5014877.html