【北大先修课】【先修课Code打包】

来源:互联网 发布:原田知世 结婚了吗 编辑:程序博客网 时间:2024/06/02 05:31

给水题打个包……

链接: http://pan.baidu.com/s/1o6mJ862 密码: b6ya

生日相同 2.0

#include<bits/stdc++.h>using namespace std;list<string>L[13][33];int n;bool cmp(string a,string b){return a.length()<b.length()||(a.length()==b.length()&&(a<b));}int main(){cin>>n;for(int i=1;i<=n;i++){string s;int x,y;cin>>s>>x>>y;L[x][y].push_back(s);}int ok=0;for(int i=1;i<=12;i++)for(int j=1;j<=31;j++){if(L[i][j].size()<=1)continue;cout<<i<<" "<<j<<" ";L[i][j].sort(cmp);for(list<string>::iterator it=L[i][j].begin();it!=L[i][j].end();it++){ok=1;cout<<*it<<" ";}puts("");}if(!ok)puts("None");return 0;}

删除数组中的元素(链表)


#include<cstdio>#include<iostream>#include<map>using namespace std;int a[200001];int main(){int n,k;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];cin>>k;for(int i=1;i<=n;i++)if(a[i]-k)printf("%d ",a[i]);}

统计学生信息(使用动态链表完成)

#include<cstdio>#include<iostream>#include<map>using namespace std;string a[200001];int n;int main(){string s;while(getline(cin,s)&&s!="end")a[n++]=s;for(int i=n-1;i>=0;i--)cout<<a[i]<<endl;}

计算矩阵边缘元素之和

#include<bits/stdc++.h>using namespace std;int T,n,m;int a[201][201];long long ans=0;int main(){cin>>T;while(T--){cin>>n>>m;ans=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>a[i][j];if(i==1||i==n||j==1||j==m)ans+=a[i][j];}cout<<ans<<endl;}return 0;}


二维数组右上左下遍历

#include<bits/stdc++.h>using namespace std;int T,n,m;int a[201][201];long long ans=0;int main(){cin>>n>>m;memset(a,-1,sizeof a);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];for(int i=1;i<=n+m;i++){int x=1,y=i;while(x<=n&&y>=1){if(a[x][y]!=-1)printf("%d\n",a[x][y]);x++;y--;}}return 0;}

字符串中最长的连续出现的字符

#include<bits/stdc++.h>using namespace std;string s;int n;int main(){cin>>n;while(n--){cin>>s;int ans=1;char c=s[0];int cnt=1;for(int i=1;i<s.length()-1;i++){if(s[i]==s[i+1]){cnt++;if(cnt>ans){ans=cnt;c=s[i];}if(cnt==ans&&c>s[i]){ans=cnt;c=s[i];}}else{cnt=1;}}printf("%c %d\n",c,ans);}return 0;} 

文字排版

#include<bits/stdc++.h>using namespace std;int n;string a,b;int main(){cin>>n;while(n--){cin>>a;if(b.length()+1+a.length()<79){if(b.length())b+=" ";b+=a;}elseif(b.length()+1+a.length()==79||b.length()+1+a.length()==80){cout<<b<<" "<<a<<endl;b=string("");}else{cout<<b<<endl;b=a;}}cout<<b<<endl;return 0;}

数组逆序重放

#include<bits/stdc++.h>using namespace std;int n;int main(){cin>>n;vector<int>v;for(int i=0;i<n;i++){int x;cin>>x;v.push_back(x);}reverse(v.begin(),v.end());for(int i=0;i<n;i++)cout<<v[i]<<" "; return 0;}


取石子游戏

#include<bits/stdc++.h>using namespace std;int a,b;bool win(int a,int b){if(b==0)return 1;if(a/b>=2)return 0;return !win(b,a-b);}int main(){while(cin>>a>>b){if(!a&&!b)break;if(a<b)swap(a,b);if(!win(a,b))puts("win");else puts("lose");}return 0;}

八皇后问题

#include<bits/stdc++.h>using namespace std;int pos[736]={1,5,8,6,3,7,2,4,1,6,8,3,7,4,2,5,1,7,4,6,8,2,5,3,1,7,5,8,2,4,6,3,2,4,6,8,3,1,7,5,2,5,7,1,3,8,6,4,2,5,7,4,1,8,6,3,2,6,1,7,4,8,3,5,2,6,8,3,1,4,7,5,2,7,3,6,8,5,1,4,2,7,5,8,1,4,6,3,2,8,6,1,3,5,7,4,3,1,7,5,8,2,4,6,3,5,2,8,1,7,4,6,3,5,2,8,6,4,7,1,3,5,7,1,4,2,8,6,3,5,8,4,1,7,2,6,3,6,2,5,8,1,7,4,3,6,2,7,1,4,8,5,3,6,2,7,5,1,8,4,3,6,4,1,8,5,7,2,3,6,4,2,8,5,7,1,3,6,8,1,4,7,5,2,3,6,8,1,5,7,2,4,3,6,8,2,4,1,7,5,3,7,2,8,5,1,4,6,3,7,2,8,6,4,1,5,3,8,4,7,1,6,2,5,4,1,5,8,2,7,3,6,4,1,5,8,6,3,7,2,4,2,5,8,6,1,3,7,4,2,7,3,6,8,1,5,4,2,7,3,6,8,5,1,4,2,7,5,1,8,6,3,4,2,8,5,7,1,3,6,4,2,8,6,1,3,5,7,4,6,1,5,2,8,3,7,4,6,8,2,7,1,3,5,4,6,8,3,1,7,5,2,4,7,1,8,5,2,6,3,4,7,3,8,2,5,1,6,4,7,5,2,6,1,3,8,4,7,5,3,1,6,8,2,4,8,1,3,6,2,7,5,4,8,1,5,7,2,6,3,4,8,5,3,1,7,2,6,5,1,4,6,8,2,7,3,5,1,8,4,2,7,3,6,5,1,8,6,3,7,2,4,5,2,4,6,8,3,1,7,5,2,4,7,3,8,6,1,5,2,6,1,7,4,8,3,5,2,8,1,4,7,3,6,5,3,1,6,8,2,4,7,5,3,1,7,2,8,6,4,5,3,8,4,7,1,6,2,5,7,1,3,8,6,4,2,5,7,1,4,2,8,6,3,5,7,2,4,8,1,3,6,5,7,2,6,3,1,4,8,5,7,2,6,3,1,8,4,5,7,4,1,3,8,6,2,5,8,4,1,3,6,2,7,5,8,4,1,7,2,6,3,6,1,5,2,8,3,7,4,6,2,7,1,3,5,8,4,6,2,7,1,4,8,5,3,6,3,1,7,5,8,2,4,6,3,1,8,4,2,7,5,6,3,1,8,5,2,4,7,6,3,5,7,1,4,2,8,6,3,5,8,1,4,2,7,6,3,7,2,4,8,1,5,6,3,7,2,8,5,1,4,6,3,7,4,1,8,2,5,6,4,1,5,8,2,7,3,6,4,2,8,5,7,1,3,6,4,7,1,3,5,2,8,6,4,7,1,8,2,5,3,6,8,2,4,1,7,5,3,7,1,3,8,6,4,2,5,7,2,4,1,8,5,3,6,7,2,6,3,1,4,8,5,7,3,1,6,8,5,2,4,7,3,8,2,5,1,6,4,7,4,2,5,8,1,3,6,7,4,2,8,6,1,3,5,7,5,3,1,6,8,2,4,8,2,4,1,7,5,3,6,8,2,5,3,1,7,4,6,8,3,1,6,2,5,7,4,8,4,1,3,6,2,7,5};int main(){ int i,j,n=92; while(n--){printf("No. %d\n",92-n);for(i=0;i<8;i++){ for(j=0;j<8;j++)if(i==pos[(91-n)*8+j]-1)printf("1 ");else printf("0 ");puts("");}}return 0;}

回文串判断

#include<bits/stdc++.h>using namespace std;int main(){string s,a;cin>>s;a=s;reverse(s.begin(),s.end());if(s==a)puts("1");else puts("0");return 0;}

分解因数

#include<iostream>#include<cstdio>using namespace std;int sum=0;void recur(int N,int i){    if(N==1) sum++;    while(i<=N)    {        if(N%i==0) recur(N/i,i);        i++;    }    return ;}int main(){    //freopen("in.txt","r",stdin);    int T=0;    cin>>T;    while(T--)    {        int N=0;        cin>>N;        int i=2,res=1;        while(i<=N/2)        {            if(N%i==0)            {                sum=0;                recur(N/i,i);                res+=sum;            }            i++;        }        cout<<res<<endl;    }    return 0;}

走出迷宫

#include<bits/stdc++.h>using namespace std;struct node{int x,y,dep;};int vis[111][111];queue<node>q;int n,m;char mp[111][111];int sx,sy,tx,ty;int main(){cin>>n>>m;for(int i=1;i<=n;i++){string s;cin>>s;for(int j=0;j<s.length();j++){mp[i][j+1]=s[j];if(s[j]=='S'){sx=i,sy=j+1;}if(s[j]=='T'){tx=i,ty=j+1;}}}q.push((node){sx,sy,0});vis[sx][sy]=1;while(!q.empty()){node u=q.front();q.pop();if(u.x==tx&&u.y==ty){cout<<u.dep<<endl;;return 0;}const int dx[4]={0,0,1,-1};const int dy[4]={1,-1,0,0};for(int i=0;i<4;i++){int x=u.x+dx[i],y=u.y+dy[i];if(x<1||y<1||x>n||y>m||vis[x][y]||mp[x][y]=='#')continue;q.push((node){x,y,u.dep+1});vis[x][y]=1;}}return 0;}


全排列

#include<bits/stdc++.h>using namespace std;string s;int main(){cin>>s;sort(s.begin(),s.end());do{cout<<s<<endl;}while(next_permutation(s.begin(),s.end()));return 0;}

流感传染

#include<stdio.h>#include<string.h> int main(){    int n,m,i,j;    char sickman[101][101];     scanf("%d",&n);    memset(sickman,'#',sizeof(sickman));     for(i = 0; i < n; i++)        for(j = 0; j < n; j++)        {            scanf("%c", &sickman[i][j]);            if( '\n' == sickman[i][j] )                --j;        }      scanf("%d",&m);          while(--m > 0)    {        for( i = 0; i < n; i++)            for( j = 0; j < n; j++)            {                if(sickman[i][j] == '@')                {                    if( i-1 >= 0 && sickman[i-1][j] == '.')                        sickman[i-1][j] = '*';                    if( i+1 < n  && sickman[i+1][j] == '.')                        sickman[i+1][j] = '*';                    if( j-1 >= 0  && sickman[i][j-1] == '.')                        sickman[i][j-1] = '*';                    if( j+1 < n  && sickman[i][j+1] == '.')                        sickman[i][j+1] = '*';                }            }         for( i = 0; i < n; i++)            for( j = 0; j < n; j++)                if(sickman[i][j] == '*')                    sickman[i][j] = '@';                 }     int sum = 0;    for( i = 0; i < n; i++)        for( j = 0; j < n; j++)                if(sickman[i][j] == '@')                    ++sum;     printf("\%d\n",sum);     return 0;}

布尔表达式


#include <stdio.h>#include <string.h>char a[1111] = {0}, s[1111], *p;int b[1111], c[1111], f[222];int i, n = 0, m;int calc(int l, int r){while (c[l] == r) ++l, --r;if (l == r) return a[l];int i, j, p = l;for (i = l; i <= r; ++i) {if (f[a[p]] < f[a[i]] || (f[a[p]] == f[a[i]] && a[p] != '!')) p = i;if (a[i] == '(') i = c[i] - 1;}if (a[p] == '!') return !calc(p + 1, r);i = calc(l, p - 1), j = calc(p + 1, r);return a[p] == '&' ? i && j : i || j;}int main(){memset(f, 0, sizeof f);f['!'] = 1, f['&'] = 2, f['|'] = 3;while (p = gets(s)) {for (n = 0; *p; ++p)if (*p == 'F') a[++n] = 0;else if (*p == 'V') a[++n] = 1;else if (*p == '!') a[n] == '!' ? --n : a[++n] = '!';else if (*p != ' ') a[++n] = *p;memset(c, 0, sizeof c);for(m = 1, i = 1; i <= n; ++i)if (a[i] == '(') b[++m] = i;else if (a[i] == ')') c[i] = b[m], c[b[m--]] = i;puts(calc(1, n) ? "V" : "F");}return 0;}

汉诺塔问题

#include<bits/stdc++.h>using namespace std;void out(int n,char A,char B,char C){if(n==1){printf("%c->%d->%c\n",A,n,C);}else{out(n-1,A,C,B);printf("%c->%d->%c\n",A,n,C);out(n-1,B,A,C);}}int n;char a,b,c;int main(){scanf("%d",&n);a=getchar();while(!isalpha(a))a=getchar();b=getchar();while(!isalpha(b))b=getchar();c=getchar();while(!isalpha(c))c=getchar();out(n,a,c,b);return 0;} 

输出二进制补码


#include<bits/stdc++.h>using namespace std;int a;int main(){while(scanf("%d",&a)==1){string s;for(int i=0;i<32;i++,a>>=1)s.push_back((a&1)+'0');reverse(s.begin(),s.end());cout<<s<<endl;}return 0;}   

扩号匹配问题

#include<bits/stdc++.h>using namespace std;string s,ss;int main(){while(getline(cin,s)){ss="";for(int i=0;i<s.length();i++)ss.push_back(' ');stack<pair<int,char> >S;for(int i=0;i<s.length();i++){if(s[i]!='('&&s[i]!=')'){continue;}if(S.empty())S.push(make_pair(i,s[i]));else{if(S.top().second=='('&&s[i]==')'){S.pop();}else{S.push(make_pair(i,s[i]));}}}while(!S.empty()){ss[S.top().first]=S.top().second=='('?'$':'?';S.pop();}cout<<s<<endl;cout<<ss<<endl;}return 0;}


排队游戏

#include<bits/stdc++.h>using namespace std;stack<pair<int,char> >S;string s;int size;pair<int,int>anss[2233];char boy,girl;int main(){cin>>s;boy=s[0];for(int i=0;i<s.length();i++)if(s[i]!=boy)girl=s[i];for(int i=0;i<s.length();i++){if(S.empty())S.push(make_pair(i,s[i]));else{if(S.top().second==boy&&s[i]==girl){anss[++size]=make_pair(i,S.top().first);S.pop();}else S.push(make_pair(i,s[i]));}}sort(anss+1,anss+1+size);for(int i=1;i<=size;i++)printf("%d %d\n",anss[i].second,anss[i].first);return 0;}

多边形游戏


#include<bits/stdc++.h>using namespace std;#define add -1#define mul -2vector<int>v;int ans=0;void deb(vector<int>v){for(int i=0;i<v.size();i++)printf("%d%c",v[i]," \n"[i==v.size()-1]);}int dfs(int l,int r){if(l==r)return v[l];int ans=0;for(int i=l+1;i<=r;i+=2){if(v[i]==add){ans=max(ans,dfs(l,i-1)+dfs(i+1,r));}else{ans=max(ans,dfs(l,i-1)*dfs(i+1,r));}}return ans;}int n;int main(){cin>>n;for(int i=1;i<=n;i++){int x;char c;cin>>x;c=getchar();while(c!='+'&&c!='*')c=getchar();v.push_back(x);if(c=='+')v.push_back(add);else v.push_back(mul); }int len=v.size();for(int i=0;i<len;i++)v.push_back(v[i]);//deb(v);for(int i=0;i<len;i+=2){ans=max(ans,dfs(i,i+len-2));}cout<<ans<<endl;return 0;}

放苹果

#include<bits/stdc++.h>using namespace std;int c[233][233];int n,m,T;int dfs(int n,int m){if(n==0||m==1)return 1;if(m>n)return dfs(n,n);return dfs(n,m-1)+dfs(n-m,m);}int main(){cin>>T;while(T--){cin>>n>>m;cout<<dfs(n,m)<<endl;}return 0;}


逆波兰表达式

#include<bits/stdc++.h>using namespace std;double exp(){    char a[10];    scanf("%s",a);    switch(a[0]){    case'+':return exp()+exp();    case'-':return exp()-exp();    case'*':return exp()*exp();    case'/':return exp()/exp();    default:return atof(a);    }}int main(){    double ans;    ans=exp();    printf("%f\n",ans);    return 0;}

数组逆序重放

#include<bits/stdc++.h>  using namespace std;  int n;  int main(){      cin>>n;      vector<int>v;      for(int i=0;i<n;i++){          int x;cin>>x;          v.push_back(x);      }reverse(v.begin(),v.end());      for(int i=0;i<n;i++)cout<<v[i]<<" ";       return 0;  }  

扩号匹配问题

#include<bits/stdc++.h>using namespace std;string s,ss;int main(){while(getline(cin,s)){ss="";for(int i=0;i<s.length();i++)ss.push_back(' ');stack<pair<int,char> >S;for(int i=0;i<s.length();i++){if(s[i]!='('&&s[i]!=')'){continue;}if(S.empty())S.push(make_pair(i,s[i]));else{if(S.top().second=='('&&s[i]==')'){S.pop();}else{S.push(make_pair(i,s[i]));}}}while(!S.empty()){ss[S.top().first]=S.top().second=='('?'$':'?';S.pop();}cout<<s<<endl;cout<<ss<<endl;}return 0;}


角谷猜想

#include<bits/stdc++.h>using namespace std;int n;int main(){cin>>n;if(n==1){puts("End");return 0;}do{if(n&1){printf("%d*3+1=%d\n",n,n*3+1);n=n*3+1;}else{printf("%d/2=%d\n",n,n/2);n>>=1;}}while(n!=1);puts("End");    return 0;}

排队游戏

#include<bits/stdc++.h>  using namespace std;  stack<pair<int,char> >S;  string s;  int size;  pair<int,int>anss[2233];  char boy,girl;  int main(){      cin>>s;      boy=s[0];      for(int i=0;i<s.length();i++)if(s[i]!=boy)girl=s[i];      for(int i=0;i<s.length();i++){          if(S.empty())S.push(make_pair(i,s[i]));          else{              if(S.top().second==boy&&s[i]==girl){                  anss[++size]=make_pair(i,S.top().first);                  S.pop();              }else S.push(make_pair(i,s[i]));          }      }sort(anss+1,anss+1+size);      for(int i=1;i<=size;i++)      printf("%d %d\n",anss[i].second,anss[i].first);      return 0;  }  

DNA排序

#include<bits/stdc++.h>using namespace std;vector<string>v;int calc(string s){int ans=0;for(int i=0;i<s.length();i++)for(int j=i+1;j<s.length();j++)if(s[i]>s[j])ans++;return ans;}bool cmp(string a,string b){return calc(a)<calc(b);}int n,m;int main(){cin>>m>>n;for(int i=1;i<=n;i++){string s;cin>>s;v.push_back(s);}stable_sort(v.begin(),v.end(),cmp);for(int i=0;i<v.size();++i)cout<<v[i]<<endl;return 0;}

单词翻转

#include <cstdio>#include<cstring>#include<iostream>using namespace std;char a[510]; int len;int main(){while(~(a[len++] = getchar())); --len; --len;int h = 0, t = 0;while(h < len){t = h;while(t < len && a[t] != ' ')  ++t;for(int i = t - 1; i >= h; --i) printf("%c", a[i]);while(a[t] == ' ' && t < len) ++t, putchar(' '); h = t;}}

请开发一个自上而下的模块化程序,用于完成以下任务

#include<bits/stdc++.h>using namespace std;vector<int>a,b;int main(){int n,m;cin>>n>>m;while(n--){int x;cin>>x;a.push_back(x);}sort(a.begin(),a.end());while(m--){int x;cin>>x;b.push_back(x);}sort(b.begin(),b.end());for(int i=0;i<a.size();i++)cout<<a[i]<<" ";for(int i=0;i<b.size();i++)cout<<b[i]<<" ";  }

带通配符的字符串匹配

#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>#define N 25using namespace std;int l1, l2;char s1[N], s2[N];bool pipei(int now1, int now2){if (now1 == l1 && now2 < l2) return false;if (now1 == l1 && now2 == l2) return true;if (now1 < l1 && now2 == l2){if (s1[now1] != '*') return false;}if (s1[now1] == '*'){int ans = false;for (int i = now2; i <= l2; ++i)ans |= pipei(now1+1, i);return ans;}else if (s1[now1] == '?') return pipei(now1+1, now2+1);else if (s1[now1] != s2[now2]) return false;else return pipei(now1+1, now2+1);}int main(){gets(s1); l1 = strlen(s1);gets(s2); l2 = strlen(s2);if (pipei(0, 0)) printf("matched\n");else printf("not matched\n");return 0;}


用二分法求方程的根

#include <stdio.h>#include <math.h>#define DEFAULT_UPPER    (10)#define DEFAULT_LOWER    (-10)#define DEFAULT_E    (0.00000001)#define _MID(x,y)    ((x+y)/2)#define _VALUE(x)    (2*x*x*x-4*x*x+3*x-6)    double _e;int getRoot(double lower, double upper, double *result);main(){    double root;    scanf("%lf",& _e);    if(_e == 0.0)        _e = DEFAULT_E;    if(getRoot(DEFAULT_LOWER, DEFAULT_UPPER, &root))        printf("%2.8lf\n", root);    else        printf("No Solution.\n");}int getRoot(double lower, double upper, double *result){    *result = _MID(lower,upper);    if(upper - lower <= _e)        return 1;    if(_VALUE(lower)*_VALUE(*result) <= 0)        return getRoot(lower, *result, result);    else if(_VALUE(*result)*_VALUE(upper) <= 0)        return getRoot(*result, upper, result);    else         return 0;}


单词替换

#include <stdio.h>#include <string.h>#define MAX   100int main(){char str[MAX+2];char a[MAX+1],b[MAX+1];char *s=str, *p;gets(s);gets(a);gets(b);strcat (s," ");while (*s){p=strchr(s,' ');*p='\0';printf((strcmp(s,a)==0)?b:s);s=p+1;if (*s){printf(" ");}}return 0;}

字符串排序

#include<bits/stdc++.h>using namespace std;vector<string>v;int T,n;int main(){cin>>T;while(T--){v.clear();cin>>n;getchar();for(int i=0;i<n;i++){string s;getline(cin,s);v.push_back(s);}sort(v.begin(),v.end());for(int i=0;i<n;i++)cout<<v[i]<<endl;//if(T-1)cout<<endl;}return 0;}

统计字符数

#include<bits/stdc++.h>using namespace std;int n;string s;int a[26];int main(){cin>>n;for(int i=0;i<n;i++){cin>>s;memset(a,0,sizeof a);for(int j=0;j<s.length();j++)a[s[j]-'a']++;int tmp=*max_element(a,a+26);for(int i=0;i<26;i++){if(a[i]==tmp){printf("%c %d\n",i+'a',a[i]);break;}}}return 0;}

单词倒排

#include<bits/stdc++.h>using namespace std;vector<string>v;int main(){string s;while(cin>>s){v.push_back(s);}reverse(v.begin(),v.end());for(int i=0;i<v.size();i++)cout<<v[i]<<" ";return 0;}

过滤多余的空格

#include<bits/stdc++.h>using namespace std;vector<string>v;int main(){char c;int ok=0;while(~(c=getchar())){if(c==' '&&!ok){putchar(' ');ok=1;}else if(c!=' '){putchar(c);ok=0;}}return 0;}

最长单词2

#include<bits/stdc++.h>using namespace std;vector<string>v;int main(){string s,ans;while(cin>>s){if(s[s.size()-1]=='.')s.erase(s.length()-1,1);if(s.length()>ans.length())ans=s;}cout<<ans<<endl;return 0;}

单词排序

#include<bits/stdc++.h>using namespace std;vector<string>v;int main(){string s;while(cin>>s)v.push_back(s);sort(v.begin(),v.end());vector<string>::iterator ed=unique(v.begin(),v.end());for(vector<string>::iterator it=v.begin();it!=ed;it++)cout<<*it<<endl;return 0;}

字符串最大跨距

#include<stdio.h>#include<string.h>void strSwap(char a[],int len);//翻转字符串数组int main(){    char s[330],s1[12],s2[12];    int i,j,flag;    int lenS,lenS1,lenS2;    int left,right,res=-1;    char *L,*R;    scanf("%s",s);    flag=0;    for(i=0,j=0;s[i]!='\0';i++)    {        if(s[i]==',')        {            if(flag==0)            {                flag=1;                s[i]='\0';            }            else if(flag==1)            {                flag=2;                s1[j]='\0';                j=0;            }        }        else if(flag==1)        {            s1[j]=s[i];            j++;        }        else if(flag==2)        {            s2[j]=s[i];            j++;        }    }    s2[j]='\0';    lenS=strlen(s);    lenS1=strlen(s1);    lenS2=strlen(s2);    //printf("%d %s\n%d %s\n%d %s\n",lenS,s,lenS1,s1,lenS2,s2);    L=strstr(s,s1);    left=L-s+lenS1-1;//s1字符串最末一个字符在S当中的下标    /*printf("%d\n",left);*/    strSwap(s,lenS);    strSwap(s2,lenS2);    R=strstr(s,s2);    right=R-s+lenS2-1;//S和S2字符串翻转情况下,s2的最末一个字符在S当中的下标    right=lenS-right-1;//S和S2字符串正常情况下,s2的最初一个字符在S当中的下标。等同于:S和S2字符串翻转情况下,S除去S2后剩余的字符个数。    if(left>right)        printf("-1\n");    else    printf("%d\n",right-1-left);//right-1-left是s1和s2之间的字符个数    return 0;}void strSwap(char a[],int len)//翻转字符串数组{    int i,j=len-1;    char t;    len=len/2;    for(i=0;i<len;i++,j--)    {        t=a[i];        a[i]=a[j];        a[j]=t;    }}

奇数单增序列

#include<bits/stdc++.h>using namespace std;vector<int>v;int main(){int n;cin>>n;while(n--){int x;cin>>x;if(x&1)v.push_back(x);}sort(v.begin(),v.end());for(int i=0;i<v.size();i++)cout<<v[i]<<",\n"[i==v.size()-1];return 0;}

找最大数序列

#include<stdio.h>int main(){    int n,i,a[31];    int max=-1,t,len=0;    char ch;    int first;    scanf("%d",&n);    getchar();    for(i=0;i<n;i++)    {        scanf("%d%c",&t,&ch);        while(ch==',')        {            if(t>max)//发现新的最大值             {                max=t;//记录最大值                 len=0;//发现新的最大值,要重置数组下标                 a[len]=i;//记录最大值的行号             }            else if(max==t)            {                if(i!=a[len])//确保同一行里面相同大小的最大数多次出现也只记录一次行号                 {                    len++;//下标前移一个单位                     a[len]=i;//记录最大值的行号                }            }            ch=' ';//清空ch的值             scanf("%d%c",&t,&ch);        }/**/        if(t>max)        {               max=t;               len=0;               a[len]=i;        }        else if(max==t)        {               if(i!=a[len])            {                len++;                  a[len]=i;               }        }    }    printf("%d\n",max);    first=1;    for(i=0;i<=len;i++)    {//输出行号时注意:题目要求行号从1开始计算。         if(first)        {            printf("%d",a[i]+1);            first=0;        }           else printf(",%d",a[i]+1);    }    printf("\n");    return 0;}

校门外的树

#include<bits/stdc++.h>using namespace std;int a[23333],n,m;int main(){cin>>n>>m;int ans=0;for(int i=0;i<=n;i++)a[i]=1;while(m--){int l,r;cin>>l>>r;for(int i=l;i<=r;i++)a[i]=0;}for(int i=0;i<=n;i++)ans+=a[i];cout<<ans<<endl;return 0;}



距离排序

#include<iostream>#include<cmath>#include <iomanip>#include<cstdio>using namespace std;struct dian{    int xx,yy,zz;};struct juLi{    dian a,b;    double len;};int main(){    struct dian A[12];    struct juLi B[50],TEMP;    int n,i,j,t;    int flag;    cin>>n;    for(i=0;i<n;i++)    {        cin>>A[i].xx>>A[i].yy>>A[i].zz;    }    t=0;    for(i=0;i<n-1;i++)    {        for(j=i+1;j<n;j++)        {            B[t].a=A[i];            B[t].b=A[j];            B[t].len=sqrt((B[t].a.xx-B[t].b.xx)*(B[t].a.xx-B[t].b.xx)+                          (B[t].a.yy-B[t].b.yy)*(B[t].a.yy-B[t].b.yy)+                          (B[t].a.zz-B[t].b.zz)*(B[t].a.zz-B[t].b.zz));            t++;        }    }        for(i=1;i<t;i++)    {        flag=1;        for(j=0;j<t-i;j++)         {            if(B[j].len<B[j+1].len)             {                 flag=0;                TEMP=B[j];                 B[j]=B[j+1];                 B[j+1]=TEMP;             }        }        if(flag)  break;  //if(flag==1)  break;    }        for(i=0;i<t;i++)    {        cout<<'('<<B[i].a.xx<<','<<B[i].a.yy<<','<<B[i].a.zz<<')';        cout<<'-';        cout<<'('<<B[i].b.xx<<','<<B[i].b.yy<<','<<B[i].b.zz<<')';        cout<<'=';        cout<<setiosflags(ios::fixed)<<setprecision(2)<<B[i].len<<endl;    }    return 0;}


错误探测

#include<cstdio>#define N_MAX 100int main(){    int n,a[N_MAX][N_MAX];        int i,j;                     int x,y,sum,row,col;          scanf("%d",&n);    while(n){        x = y = -1;        row = col = 0;        if(n==1){            scanf("%d",&x);            if(x==0){                printf("OK\n");            }else{                printf("Change bit (1,1)\n");                }            scanf("%d",&n);            continue;        }         for(i=0;i<n;i++){            sum = 0;            for(j=0;j<n;j++){                scanf("%d",&a[i][j]);                sum += a[i][j];            }            if(sum%2){                row ++;                if(x==-1) x = i;            }         }        for(j=0;j<n;j++){            sum = 0;            for(i=0;i<n;i++){                sum += a[i][j];            }            if(sum%2){                col ++;                if(y==-1) y = j;            }         }        if(row==0 && col==0){            printf("OK\n");        }else if(row==1 && col==1){            printf("Change bit (%d,%d)\n",x+1,y+1);        }else{            printf("Corrupt\n");        }        scanf("%d",&n);    }    return 0;}

计算鞍点

#include<cstdio>#define maxN  50#define maxM  50int main(){    int n,m,i,j,k;    int a[maxN][maxM]={0};    int max,x,y;    int flag;    n=5;    m=5;    for(i=0;i<n;i++)    {        for(j=0;j<m;j++)        {            scanf("%d",&a[i][j]);        }    }    for(i=0;i<n;i++)    {        max=a[i][0];//???????????????         x=i;//????????????         y=0;        for(j=1;j<m;j++)//???????         {            if(a[i][j]>max)            {                max=a[i][j];                y=j;            }        }        flag=1;        for(k=0;k<n;k++)//??????????max????????y?????         {            if(a[k][y]<max)            {                flag=0;//flag?0??max???y?????                 break;            }        }        if(flag==1)//flag?1??max??y?????,??????,?????          {            printf("%d %d %d\n",x+1,y+1,max);            break;//????????,??????????????         }    }    if(flag==0)//?????????,???????????         printf("not found\n");    return 0;}

求序列中的众数

#include<bits/stdc++.h>using namespace std;map<string,int>M;string read(){string s1="";bool flag(0);char c=0;for(;c<'0'||c>'9';c=getchar())if(c=='-')flag=1;while(c=='0')c=getchar();for(;c>='0'&&c<='9';c=getchar())s1+=c;if(s1=="")s1="0";else if(flag)s1='-'+s1;return s1;}string ans;int n;vector<string>v;int main(){cin>>n;if(n==0)while(1);for(int i=1;i<=n;i++){string s=read();//cout<<s<<endl;v.push_back(s);M[s]++;}int tmp=0;for(map<string,int>::iterator it=M.begin();it!=M.end();it++)tmp=max(tmp,it->second);for(int i=0;i<v.size();i++){if(M[v[i]]==tmp){ans=v[i];break;}}if(M.size()<=1)puts("no");else cout<<ans<<endl;return 0;}

矩阵归零消减序列和

#include<stdio.h>int main(){    int a[100][100],i,j,k,n;    int rowMin,colMin;    int x;    int sum;    scanf("%d",&n);    for(k=0;k<n;k++)    {        //输入二维数组        for(i=0;i<n;i++)        {            for(j=0;j<n;j++)            {                scanf("%d",&a[i][j]);            }        }        sum=0;        //归零和消减,整个操作有n-1次,每次进行时数组的阶是x        for(x=n;x>1;x--)        {            //行的归零            for(i=0;i<x;i++)            {                rowMin=a[i][0];                for(j=1;j<x&&rowMin>0;j++)                {                    if(a[i][j]<rowMin)                    {                        rowMin=a[i][j];                    }                }                if(rowMin!=0)                {                    for(j=0;j<x;j++)                    {                        a[i][j]=a[i][j]-rowMin;                    }                }            }            //列的归零            for(j=0;j<x;j++)            {                colMin=a[0][j];                for(i=1;i<x&&colMin>0;i++)                {                    if(a[i][j]<colMin)                    {                        colMin=a[i][j];                    }                }                if(colMin!=0)                {                    for(i=0;i<x;i++)                    {                        a[i][j]=a[i][j]-colMin;                    }                }            }            sum=sum+a[1][1];            //下面是消减            i=0;            for(j=2;j<x;j++)                a[i][j-1]=a[i][j];            j=0;            for(i=2;i<x;i++)                a[i-1][j]=a[i][j];            for(i=2;i<x;i++)            {                for(j=2;j<x;j++)                {                    a[i-1][j-1]=a[i][j];                }            }        }        printf("%d\n",sum);    }    return 0;}

找和为K的两个元素


#include<iostream>using namespace std;int main(){    int n,k,i;    cin>>n>>k;    int a[1000];//???????????    for(i=0;i<n;i++)    {      cin>>a[i];    }    int j=0;    for(i=0;i<n;i++)     {                     for(j=0;j<n;j++)                     {                         if(k==a[i]+a[j])                          {                                  cout<<"yes"<<endl;                                  return 0;                         }                     }     }     cout<<"no"<<endl;   }

求满足条件的3位数

#include<bits/stdc++.h>using namespace std;bool can(int x){int ok=0;for(int i=1;i*i<=x;i++)if(i*i==x)ok=1;if(!ok)return false;ok=0;if(x%10==x/10%10)ok=1;if(x%10==x/100)ok=1;if(x/10%10==x/100)ok=1;return ok;}int main(){int n;cin>>n;int s=0;for(int i=100;i<=999;i++){if(can(i)){s++;if(s==n){cout<<i<<endl;return 0;}}}return 0;}

简单算术表达式求值

#include<bits/stdc++.h>using namespace std;int main(){int a,b;char op;a=getchar()-'0';a=a*10+getchar()-'0';op=getchar();while(op==' ')op=getchar();char c=getchar();while(c==' ')c=getchar();b=c-'0';b=b*10+getchar()-'0';if(op=='+')cout<<a+b<<endl;if(op=='-')cout<<a-b<<endl;if(op=='*')cout<<a*b<<endl;if(op=='/')cout<<a/b<<endl;if(op=='%')cout<<a%b<<endl;return 0;}

完美立方

#include<stdio.h>int main(){int a,b,c,d;int n; scanf("%d",&n);for(a=2;a<=n;a++){      for(b=2;b<a;b++){         for(c=b;c<a;c++){             for(d=c;d<a;d++){                    if(a*a*a==b*b*b+c*c*c+d*d*d)                     printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d); } }  }}return 0;}

求特殊自然数

#include<bits/stdc++.h>using namespace std;int main(){int x;cin>>x;if(x==1)puts("248");if(x==2)puts("503");if(x==3)puts("305");return 0;}

称体重

#include<iostream>using namespace std;void sort(int a,int b,int c,int d){int result[4]={a,b,c,d};char name[4]={'z','q','s','l'};int temp;char tempname;for(int i=0;i<4;i++){for(int j=i;j<4;j++){if(result[i]<result[j]){temp=result[i];result[i]=result[j];result[j]=temp;tempname=name[i];name[i]=name[j];name[j]=tempname;}}}for(int i=0;i<4;i++){cout<<name[i]<<" "<<result[i]<<endl;}} int main(){int z,q,s,l;for(z=1;z<=5;z++){for(q=1;q<=5;q++){for(s=1;s<=5;s++){for(l=1;l<=5;l++){if(z+q==s+l&&z+l>s+q&&z+s<q&&z!=q!=s!=l){sort(z,q,s,l);}}}}}return 0;}

比饭量

#include<cstdio>using namespace std;int main(){puts("BCA");}


最长平台

#include<bits/stdc++.h>using namespace std;int a[2333];int n;int main(){while(cin>>n){if(!n)break;memset(a,0,sizeof a);for(int i=1;i<=n;i++)cin>>a[i];int ans=0,res=1;for(int i=1;i<=n;i++)if(a[i]==a[i+1])ans=max(ans,++res);else res=1;cout<<ans<<endl;}return 0;}

鸡尾酒疗法

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){int n;double a, b;scanf("%d", &n);scanf("%lf %lf", &a, &b);for (int i = 1;i < n; ++i){double c, d;scanf("%lf %lf", &c, &d);double x, y;x = b / a;y = d / c;if (y - x > 0.05)puts("better");elseif (x - y > 0.05)puts("worse");elseputs("same");}}


求出e的值

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){double n;scanf("%lf", &n);double jc(1.00), res(1.00);for (double i = 1;i <= n; ++i){jc *= i;res += double(1) / jc;}printf("%.10lf", res);}

球弹跳高度的计算

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){double n;scanf("%lf", &n);double res(0), h = n;res = n;for (int i = 1;i < 10; ++i)res += n, n /= 2.00;for (int i = 1;i <= 10; ++i)h /= 2.00;cout<<res<<endl<<h;}


求分数序列和

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){double n, res(0);scanf("%lf", &n);double a, b, c, d, e, f;a = 1.00, b = 1.00, c = a + b;d = 0.00, e = 1.00, f = d + e;for (int i = 1;i <= n; ++i){res += c/f;a = b, b = c, c = a + b;d = e, e = f, f = d + e;}printf("%.4lf", res);}

第二个重复出现的数

#include <cstdio>using namespace std;int a[1000];int main(){int T;scanf("%d", &T);while (T--){int n, i, j, x(-1), y(-1);scanf("%d", &n);for (i = 1;i <= n; ++i)scanf("%d", &a[i]);for (i = 1;i <= n; ++i){if (x == -1){for (j = i + 1;j <= n && x == -1; ++j)if (a[j] == a[i])x = a[i];}elseif (y == -1){if (a[i] != x){for (j = i + 1;j <= n && y == -1; ++j)if (a[j] == a[i])y = a[i];}}}if (y == -1)puts("NOT EXIST");elseprintf("%d\n", y);}}

角谷猜想

#include <cstdio>using namespace std;int main(){int n;scanf("%d", &n);while (n != 1){if (n % 2){printf("%d*3+1=%d\n", n, n*3+1);n = n * 3 + 1;}else{printf("%d/2=%d\n", n, n/2);n /= 2;}}puts("End");}

分数求和


#include <cstdio>using namespace std;int n, a[100000], b[100000], m(1), z, i, list[1000000], size, is[1000000];char c;inline int max(int a, int b){return a > b ? a : b;}inline void read(int &x){for (c = getchar();c > '9' || c < '0';c = getchar());for (x = 0;c >= '0' && c <= '9';c = getchar())x = (x << 3) + (x << 1) + c - '0';}inline void get(int n){is[1] = 1;for (int i = 2;i <= n; ++i){if (!is[i]){list[++size] = i;}for (int j = 1;j <= size && i * list[j] <= n; ++j){is[i * list[j]] = 1;if (i % list[j] == 0)break;}}}int main(){scanf("%d", &n);get(n);for (i = 1;i <= n; ++i){read(a[i]);read(b[i]);m *= b[i];}for (i = 1;i <= n; ++i)z += a[i] * (m / b[i]);get(max(z, m));for (i = 1;i <= size; ++i){while (z % list[i] == 0 && m % list[i] == 0)z /= list[i], m /= list[i];}if (z % m == 0)printf("%d", z/m);elseprintf("%d/%d", z, m);}

人民币支付

#include <cstdio>using namespace std;int main(){int n, a, b, c, d, e, f;scanf("%d", &n);for (a = 0;n >= 100; ++a)n -= 100;for (b = 0;n >= 50; ++b)n -= 50;for (c = 0;n >= 20; ++c)n -= 20;for (d = 0;n >= 10; ++d)n -= 10;for (e = 0;n >= 5; ++e)n -= 5;f = n;printf("%d\n%d\n%d\n%d\n%d\n%d", a, b, c, d, e, f);}

年龄与疾病

#include <cstdio>using namespace std;int main(){double n, a(0), b(0), c(0), d(0);scanf("%lf", &n);for (double i = 1;i <= n; ++i){int x;scanf("%d", &x);if (x >= 1 && x <= 18)a++;if (x >= 19 && x <= 35)b++;if (x >= 36 && x <= 60)c++;if (x >= 61)d++;}printf("1-18: %.2lf%\n", a * double(100) / n);printf("19-35: %.2lf%\n", b * double(100) / n);printf("36-60: %.2lf%\n", c * double(100) / n);printf("60-: %.2lf%\n", d * double(100) / n);}

短信计费

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n, cnt;int main(){scanf("%d", &n);while (n--){int x;scanf("%d", &x);while (x > 0)cnt++, x -= 70;}printf("%.1lf", double(cnt) * 0.1);}

奥运奖牌计数

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n, cnt, a, b, c;int main(){scanf("%d", &n);while (n--){int x, y, z;scanf("%d %d %d", &x, &y, &z);a += x, b += y, c += z;cnt += x + y + z;}printf("%d %d %d %d", a, b, c, cnt);}

整数的个数



#include <cstdio>using namespace std;int n, a, b, c;int main(){scanf("%d", &n);for (int i = 1;i <= n; ++i){int x;scanf("%d", &x);if (x == 1)a++;if (x == 5)b++;if (x == 10)c++;}printf("%d\n%d\n%d\n", a, b, c);}

细菌的战争

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <set>#include <queue>using namespace std;#define N#define Mint main(){int n;int a, b;scanf("%d", &n);while (n--){int i(0);scanf("%d %d", &a, &b);while (a > 0){i++;a -= b;a *= 2;b += b / 20;while (a > 1000000)a = 1000000;}printf("%d\n", i);}}

能被3,5,7整除的数

#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <set>#include <queue>using namespace std;#define N#define Mint main(){int n;while (scanf("%d", &n) != EOF){int ok(0);if (n % 3 == 0)printf("3 "), ok++;if (n % 5 == 0)printf("5 "), ok++;if (n % 7 == 0)printf("7 "), ok++;if (!ok)puts("n");elseputs("");}}

谁考了第k名


#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <set>#include <queue>using namespace std;#define N#define Mstruct a{double x, y;}q[101];inline bool cmp(a A, a B){return A.y > B.y;}int main(){int n, k;while (scanf("%d %d", &n, &k) != EOF){for (int i = 1;i <= n; ++i)scanf("%lf %lf", &q[i].x, &q[i].y);sort(q+1, q+1+n, cmp);printf("%.0lf %g\n", q[k].x, q[k].y);}}

求平均年龄

#include <cstdio>using namespace std;double x, y;int n;int main(){scanf("%d", &n);for (int i = 0;i < n; ++i){scanf("%lf", &x);y += x;}y /= double(n);printf("%.2lf\n", y);}

计算三角形面积


#include <cstdio>#include <cmath>using namespace std;double a, b, c, p, S, x1, x2, x3, Y1, y2, y3;double dis(double x1, double Y1, double x2, double y2){return (sqrt((x1-x2)*(x1-x2) + (Y1-y2)*(Y1-y2)));}int main(){scanf("%lf %lf %lf %lf %lf %lf", &x1, &Y1, &x2, &y2, &x3, &y3);a = dis(x1, Y1, x2, y2);b = dis(x1, Y1, x3, y3);c = dis(x3, y3, x2, y2);p = (a + b + c) / 2.00;printf("%.2lf", S = sqrt(p*(p-a)*(p-b)*(p-c)));}

计算书费

#include <cstdio>using namespace std;double a, b, c, d, e, f, g, h, i, j;int n;int main(){scanf("%d", &n);while (n--){scanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf", &a, &b, &c, &d, &e, &f, &g, &h, &i, &j);printf("%.2lf\n", 28.9 * a + 32.7 * b + 45.6 * c + 78.0 * d + 35.0 * e + 86.2 * f + 27.8 * g + 43.0 * h + 56.0 * i + 65.0 * j);}}


骑车与走路


#include <cstdio>using namespace std;int n, a, b, c;int main(){scanf("%d", &n);while (n--){scanf("%d", &a);b = 27 + 23;if (double(b) + double(a) / 3.0 < double(a) / 1.2)printf("Bike\n");if (double(b) + double(a) / 3.0 > double(a) / 1.2)printf("Walk\n");if (double(b) + double(a) / 3.0 == double(a) / 1.2)printf("All\n");}}

点和正方形的关系

#include <cstdio>using namespace std;int n, a, b, c;int main(){while (scanf("%d %d", &a, &b) != EOF){if (a >= -1 && a <= 1 && b >= -1 && b <= 1)printf("yes\n");elseprintf("no\n");}}

整数的个数

#include <cstdio>using namespace std;int n, a, b, c;int main(){scanf("%d", &n);for (int i = 1;i <= n; ++i){int x;scanf("%d", &x);if (x == 1)a++;if (x == 5)b++;if (x == 10)c++;}printf("%d\n%d\n%d\n", a, b, c);}

1的个数

#include <cstdio>using namespace std;int n, a, b, c;int main(){scanf("%d", &n);for (int i = 1;i <= n; ++i){int x, cnt(0);scanf("%d", &x);while (x){if (x & 1)cnt++;x >>= 1;}printf("%d\n", cnt);}}

大象喝水


#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const double pai = 3.14159;double h, r, V;int main(){scanf("%lf %lf", &h, &r);h /= 10, r /= 10;V = pai * r * r * h;int i;for (i = 1;i * V <= 20.0; ++i);if ((i-1) * V == 20.0)printf("%d", i-1);elseprintf("%d", i);}

苹果和虫子

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n, x, y;int main(){scanf("%d %d %d", &n, &x, &y);if (y % x == 0)printf("%d", max(0, n - y / x));elseprintf("%d", max(0, n- y / x - 1));}

晶晶赴约会

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n;int main(){scanf("%d", &n);if (n == 1 || n == 3 || n== 5)printf("NO");elseprintf("YES");}


求一元二次方程的根

#include<stdio.h>#include<math.h>void print(double x){if(x<1e-5 && x>-1e-5)printf("0.00000");elseprintf("%.5f",x);}void f(){double a,b,c;double delta,ans;scanf("%lf%lf%lf",&a,&b,&c);delta=b*b-4*a*c;if(delta<1e-5 && delta>-1e-5){ans=-b;ans/=2;ans/=a;printf("x1=x2=");print((-b)/(2*a));printf("\n");return;}if(delta>1e-5){delta=sqrt(delta);printf("x1=");print((-b+delta)/(a*2));printf(";x2=");print((-b-delta)/(a*2));printf("\n");return;}delta=sqrt(-delta);delta/=2*a;ans=(-b)/(2*a);printf("x1=");print(ans);printf("+");print(delta);printf("i;x2=");print(ans);printf("-");print(delta);printf("i\n");}int main(){int n,i,s;scanf("%d",&n);for(i=1;i<=n;i++){f();}return 0;}

鸡兔同笼

#include <cstdio>using namespace std;int n, m;int main(){scanf("%d", &n);while (n--){scanf("%d", &m);if (m % 2 == 1)printf("0 0\n");elseprintf("%d %d\n", (m / 4) + (m % 4) / 2, m / 2);}}

判断闰年

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n;int main(){scanf("%d", &n);if((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)printf("Y");elseprintf("N");}


奇数求和

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n, m, ans;int main(){scanf("%d %d", &m, &n);if (m % 2 == 0)m++;for (int i = m;i <= n;i += 2)ans += i;printf("%d\n", ans);}

与7无关的数

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int n, ans;bool fj(int x){while (x){int j = x % 10;x /= 10;if (j == 7)return 1;}return 0;}int main(){scanf("%d", &n);for (int i = 1;i <= n; ++i){if (i % 7 == 0)continue;if (fj(i))continue;ans += i * i;}printf("%d\n", ans);}




0 0
原创粉丝点击