Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 230 Divizori : Noiembrie 06, 2013, 14:22:55
De ce doar 4 puncte?
Si doar un rezultat e bun...
Cod:
#include <iostream>
#include <fstream>

using namespace std;

int st[100],N,n,a[100] ;

void inceput()
{
    ifstream f("divizori.in");
    f>>N;
    a[1]=1;
    n=1;

    for( int i=2; i<=N/2; i++)
    {
        if(N%i==0)
        {
            n++;
            a[n]=i;
        }
    }
    n++;
    a[n]=N;

}

int done=0;
void afisare(int k)
{
    ofstream g("divizori.out");
    g<<k<<endl;

    for(int i=1; i<=k; i++)
        g<<a[st[i]]<<" ";
    g<<endl;
    g.close();
    done=1;
}

int valid(int k)
{

    for(int i=1; i<=k-1; i++)
        if (st[i]==st[k])
            return 0;

    if(k>1)
    {



        if( a[st[k]] % a[st[k-1]] !=0 && a[st[k-1]] % a[st[k]]!=0 )
            return 0;


    }
    return 1;
}
void back(int k)
{
    if(done==1) return;
    for(int i=1; i<=n; i++)
    {
        st[k]=i;
        if(valid(k))
        {
            if(k==n)
                afisare(k);
            else
                back(k+1);
        }
    }
}
int main()
{

    inceput();

    back(1);


    return 0;
}
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 046 Text : Noiembrie 06, 2013, 13:16:48
De ce nu merge sa citesc tot sirul inainte si apoi sa-l parcurg?
Acesta este codul:
Cod:
#include <iostream>
#include <fstream>
#include <cstring>
#include <cctype>

using namespace std;
char a[1100010];
int main()
{
    ifstream fin("text.in");
    ofstream fout("text.out");
    int i;
    fin.getline(a,1100000);
    int n=strlen(a);
    int s=0,k=0,ok=1;
    for(i=0;i<n;i++)
    {
        if(isalpha(a[i]))
        {
            s++;
            if(ok)
                k++,ok=0;
        }
        else
            ok=1;
    }
        fout<<s/k;
    return 0;
}
Daca il fac identic, doar ca il citesc caracter cu caracter functioneaza.
Multumesc anticipat.

Pentru ca pui in vectorul a linia 1100000.
http://www.dreamincode.net/forums/topic/127452-converting-ifstream-to-char-array/

Dar nu fa asa, e foarte aiurea, si ineficient :p

Rezolvarea mea (100 p)

Cod:
#include <iostream>
#include <fstream>
using namespace std;

int e_litera(char a)
{
    if((a>=65 && a<=90) || (a>=97 && a<=122) )
        return 1;

        return 0;
}
int main()
{
    int nrcuvinte=0;
    int nrlitere=0;
    ifstream cit("text.in");
    char c;
    char lastChar=0;
    while(cit>> noskipws >>c)
    {

        if(e_litera(c))  nrlitere++;

        if(lastChar!=0)
        {
            if(!e_litera(c) && e_litera(lastChar))
                nrcuvinte++;
        }
        lastChar=c;


    }
    ofstream cut("text.out");
    cut<<nrlitere/nrcuvinte;
    cut.close(); cit.close();

    return 0;
}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines